Index für MySql spalte
Hans Gustav
- php
Hallo,
wieso wird die datenbank durch einen index schneller?
was kann das für ein problem sein wenn ich über webmin folgenden sql-code eingebe:
CREATE INDEX blabla ON kundendaten (ORT)
? und ich nur ein failed als meldung bekomme, was ist falsch?
MfG
Hans Gustav
Hi Hans Gustav,
CREATE INDEX blabla ON kundendaten (ORT)
? und ich nur ein failed als meldung bekomme, was ist falsch?
Indexe können AFAIK über Integer-Felder sowie auch Varchar-Felder mit maximum 64 Bit gelegt werden. Aber eigentlich lohnt es sich dann schon nicht mehr. Dein Feld ORT ist bestimmt vom Typ varchar und grösser als 64!?
Indexe können den Datenfluss verbessern aber bei falscher Anwendung auch verschlechtern. Ausserdem machen sie richtig eingesetzt erst bei sehr grossen Datenmengen Sinn.
ciao
romy
ich hab jetzt mal ort angeklickt und hab typ geändert auf varchar und am ende kam varchar(255) raus und es geht immer noch nicht vorher wars text. und nu?
die datenbank ist riessig ich habe eine txt von 80MB drin das sind 500.000 sätze!
MfG
Hans Gustav
Hi Hans Gustav,
ich hab jetzt mal ort angeklickt und hab typ geändert auf varchar und am ende kam varchar(255)
äh, ich hatte doch geschrieben bis maximal 64 Bit oder?
varchar(255) sind 255 Bit
die datenbank ist riessig
-> das ist aber nicht gut, Risse sollte man vermeiden SCNR ;))
ich habe eine txt von 80MB drin das sind 500.000 sätze!
wieso muss der Index unbedingt über den Ort gehen, hast Du kein Id-Feld, welches Du benutzen kannst?
Welches DBMS benutzt Du eigentlich. Ich würde Dir echt raten, Dich in die Doku einzulesen, wozu Indexe da sind, und was sie bewirken. Man kann damit echt auch einiges kaputt machen. Ausserdem beherrschen AFAIK nicht alle DBMS ide Indexierung.
bei mysql gibt es zB. das hier:
http://www.mysql.com/doc/de/CREATE_INDEX.html#IDX1406
Die Sache mit der Indexierung ist nicht über den Zaun zu brechen. Das sollte man vorher gut planen. Es lassen sich Indexe auch über mehrere Spalten legen etc. Wenn Du einen Geschwindigkeitsvorteil erlangen willst solltest Du erst lesen, dann schreiben.
Das ist nicht böse gemeint, sonder nur ein gut gemeinter Hinweis.
ciao
romy
äh, ich hatte doch geschrieben bis maximal 64 Bit oder?
varchar(255) sind 255 Bit
ja ich konnte da aber nix auswählen:
Field parameters ########
Field name ########
Data type #######+ Warning! Changing type may result in data loss
Allow nulls? # Yes # No
Default value ########
Part of primary key? # Yes # No
das feld width gibts erst nach dem ändern von typ text auf varchar und ich denke mal ich beschränke dann die anzahl der zeichen von orts namen die bis zu 30 zeichen lang sind kann ich da 16 als width angeben ohne daten verlust?
nein ich hab kein id feld kann auch keins machen - vorschrift!
damit meinst du doch eine spalte (id)oder?
Welches DBMS benutzt Du eigentlich.
wasn das?
MfG
Hans Gustav
Hi Hans Gustav,
das feld width gibts erst nach dem ändern von typ text auf varchar und ich denke mal ich beschränke dann die anzahl der zeichen von orts namen die bis zu 30 zeichen lang sind kann ich da 16 als width angeben ohne daten verlust?
keine Ahnung, kommt auf dein verwendetes Datenbankmanagementsystem an.
Welches Programm nutzt Du zur Datenbankerstellung? Da muss Dir dann jemand helfen, der dieses kennt.
nein ich hab kein id feld kann auch keins machen - vorschrift!
damit meinst du doch eine spalte (id)oder?
ja , meine ich. Aber Du wirst doch einen Primary Key haben oder, der ist meist günstig für Indexe.
Welches DBMS benutzt Du eigentlich.
wasn das?
siehe oben
Datenbankmanagementsystem
mysql oder MSSQL oder ...
ciao
romy
és geht und die db ist auch ein wenig schneller, aber
ist es besser einen index auf mehrere spalten zu legen oder jeweils ein index für eine spalte? gibt es da bezüge?
Hans Gustav
Hi Hans Gustav,
és geht und die db ist auch ein wenig schneller, aber
schön
ich habe übrigens gerade mitgekriegt, dass im Title steht, welches DBMS DU benutzt, sorry für die Nachfrage
ist es besser einen index auf mehrere spalten zu legen oder jeweils ein index für eine spalte? gibt es da bezüge?
das kann ich Dir leider nicht beantworten, aber ich habe mal den Titel geändert, vielleicht weiss ja jemand anderes mehr.
ciao
romy
Hi Romy, Hans Gustav
ist es besser einen index auf mehrere spalten zu legen oder jeweils ein index für eine spalte? gibt es da bezüge?
das kann ich Dir leider nicht beantworten, aber ich habe mal den Titel geändert, vielleicht weiss ja jemand anderes mehr.
Pro Tabelle kann nur ein Index verwendet werden. Wenn also mehrere Felder häufig in Kombination verwendet werden, kann es sich lohnen, über diese zusammen einen Index zu legen weil sonst nur für ein Feld ein Index benutzt werden kann.
Dieser Index kann auch für Abfragen über einen Teil der Felder benutzt werden, es müssen aber immer die ersten Felder sein, sobald ein Unterbruch in der Kette da ist, wird von diesem Zeitpunkt an der Index verlassen.
Gruss Daniela