Antwort #45 am: 21. April 2010, 19:41:15
Hallo,
bin gerade über eine Stelle im Shop gestolpert, die im slowlog aufgetaucht ist, nämlich die Abfrage für die Artikelliste unter "Kunden, die diesen Artikel gekauft haben, kauften auch", also bei jeder Einzelansicht eines Artikels!. Die Abfrage skaliert nicht gut. Solange nicht viele Bestellungen im Shop sind, fällt das nicht auf, aber in meinem Testshop hatte die orders_products über 20000 Sätze, und die Abfrage brauchte auf einem fetten Server reproduzierbar 12 Sek!. Abhilfe schaffen folgende Indizes:
ALTER TABLE orders_products
ADD INDEX orders_id (orders_id),
ADD INDEX products_id (products_id);
Anschließend lag die Abfrage bei ca 200 ms, also Faktor 60 schneller. Im ersten Posting dieses Themas wurde in dem Dunstkreis bereits ein zusätzlicher Index empfohlen, der die beiden Felder zusammenfasst. Besser sind aber zwei einzelne Indizes, weil nur 1/10 der Satzanzahl gegenüber den zusammengesetzten Indizes betrachtet wird.
Grüße, Volker