Mailinglisten-Archive |
Aloha, > Von: Stephan Schumann[SMTP:sts_(at)_kkcomputer.de] > > Hat vielleicht jemand nen link wo ich weitere Infos finde was z.B. die > Indexes genau machen und was sie mir bringen? > der Klassiker fehlt noch: SQL in 21 Tagen online: http://www.mut.de/leseecke/leseecke.asp Kapitel 10 Ist eigentlich ziemlich ausführlich beschrieben. Die Zusammenfassung: Indexe werden für eine oder mehrer Spalten erstellt. Wenn du z.B. eine Tabelle personen hast mit id Laufende Nummer vorn Vorname nachn Nachname ort Ort Und einen index a auf vorn, einen index b auf ort, nachn erstellst, dann: - Suche nach einer bestimmten ID dauert lange weil kein Index vorhanden. - Suche nach einem Vorname mit where vorn='Hans' geht fix, weil Index a benutzt wird. - Suche nach einem Vorname mit like vorn='Han%' geht fix, weil Index a benutzt wird. - Suche nach einem Vorname mit like vorn='%an%' geht langsam, weil KEIN Index benutzt wird. (Das ist das Beispiel bei dir, wenn du die Artikeltexte nach Strings durchsuchen willst! Das letzte Problem lässt sich lösen, wenn die Datenbank Volltextindexe unterstützt oder du dir einen Volltextindexer dafür baust. - Suche nach einem Ort mit like ort='Ham%' geht fix, weil Index b benutzt wird. (ebenso auch where ort = 'Hamburg'; ort like ='%amburg%' geht langsam) - Suche nach Ort UND Nachname geht auch schnell, weil Index b benutzt wird (where ort= 'Hamburg' AND nachn = 'Müller') Die Indexe werden auch beim Sortieren benutzt, z.B. bei where ort='Hamburg' order by nachn (Index b). Also alles in Allem eine praktische Sache, nur dir hilfts nicht weiter ;) Zu beachten ist noch, daß bei JEDER DML-Operation (Insert / Update / Delete) auch der Index geändert werden muß, was zusätzlich Zeit kostet. Wenn du z.B. die Personentabelle jede nacht neu aus einer Textdatei lädst, ist es schneller, vorher den Index zu löschen und nach dem laden neu zu erzeugen... Grüße, Mathias
php::bar PHP Wiki - Listenarchive