Datenmenge ein Problem? Suchanfragenperfomance?
Hallo Leute,
ich programmier schon seit einiger Zeit ( etwas über ein jahr ) mit PHP, hab aber meistens mit Flash irgendwelche Sachen gemacht, bin also was MySQL angeht eher ein Neuling und hätte da mal ein paar Fragen...
In meinem Projekt habe ich 1 Tabelle mit Usern welche 25 Spalten enthält und die dementsprechenden informationen über den user...( etwa 500 User an der Zahl insgesamt )...ein Kollege von mir meinte nun, das es ziemlich ineffektiv sei, z.B. den Namen, das Geburtsdatum, die Telefonnummer etc. in der Datenbank in einem Varchar-Feld zu speichern, da ein normales Text-Feld weniger Speichern fressen würde und für Telefonnummer, Geburtsdatum etc. ein Int noch besser wäre, da das viel weniger speicher frisst und bei suchanfragen deutlich schneller ist...
Der Kollege hat zwar viel Programmiererfahrung, allerdings kann ich ihm trotzdem nicht ganz glauben, denn mit MySQL-Datenbanken hat er noch nie gearbeitet und er kann programmiermäßig auch nichts aktuelles...sein Erfahrungsstand beschränkt sich z.B. auf Sachen wie Perl und HTML 3 ( also alles etwas veraltet, was Webprojekte angeht.. )
Und zu Varchar hab ich auf der MySQL-Seite z.B. gefunden, das es 1 Byte + Länge oder so ähnlich an Speicher frisst und zu nem Text 2 Byte + Länge wenn ich mich recht entsinne und das würde ja schon widerlegen, das ein Varchar mehr speicher frisst als ein Textfeld...
Meine Frage nun ist: Ist bei einem etwas größeren Projekt tatsächlich stark darauf zu achten wieviel Perfomance man "verschenkt"? Also sollte man akribisch darauf achten, das alles so klein wie möglich ist oder ist es quasi egal, selbst bei noch größeren Projekten, ob ein Telefonnummerfeld nen Varchar oder nen Int ist?
Und Frage Nr. 2: Wie sucht MySQL denn nach einem Wert wenn ich eine SELECT-Abfrage mache? Geht MySQL jeden Eintrag durch oder hat MySQL irgendwelche intelligente Suchabfrage-"funktionen" parat?
und
dauert eine Suche nach einem Wert in einer Varchar-Spalte tatsächlich länger als in einer INT-Spalte? oder ist es auch hier egal, was es für eine Spalte ist ( rein perfomancemäßig )?
vielen Dank schonmal im vorraus!
gruß,
Ascer
|