Ich brauche zu beschleunigen spezifischen mysql-Abfrage auf dem großen Tisch,

Hi ich weiß es gibt viele Themen, die sich um query-Optimierung-Strategien, aber diese ist so spezifisch, ich konnte nicht die Antwort finden überall auf der interenet.

Habe ich große Tabelle von Produkt im eshop (appx. 180k Zeilen) und die Tabelle mit 65 Spalten. Ja ja ich weiß, das ist ziemlich viel, aber ich Speichere es Informationen über Bücher, dvds, bluerays und Spiele.

Bin ich noch nicht in Betracht, eine Menge von Spalten in der Abfrage, aber die Option ist immer noch ziemlich knifflig. Es gibt viele Bedingungen, die berücksichtigt werden müssen und verglichen. Abfrage unter

SELECT *
FROM products
WHERE production = 1 
AND publish_on < '2012-10-23 11:10:06' 
AND publish_off > '2012-10-23 11:10:06' 
AND price_vat > '0.5' 
AND ean <> ''
AND publisher LIKE '%Johnny Cash%'
ORDER BY bought DESC, datec DESC, quantity_storage1 DESC, quantity_storege2 DESC, quantity_storage3 DESC
LIMIT 0, 20

Ich habe auch schon versucht dort zu setzen Indizes eins zu eins auf Spalten in der where-Klausel und sogar in der order by-Klausel, dann habe ich versucht zu erstellen zusammengesetzter index auf (Produktion, publish_on, publish_off, price_vat, ean).

Abfrage ist immer noch langsam (paar Sekunden) und es müssen schnell sein, da seine eshop-Lösung und die Leute zu verlassen, da Sie nicht immer Ihre Ergebnisse schnell. Und ich bin noch nicht eingerechnet die Zeit, die ich brauche, um die Suche durchzuführen, die für alle gefundenen Zeilen, so dass ich machen kann, paging.

Ich meine, der beste Weg, um es schnell ist die Vereinfachung der Abfrage, sondern auch alle Bedingungen und Sortierung ist ein muss in diesem Fall.

Kann mir jemand helfen mit dieser Art von Problem? Ist es auch möglich, die Geschwindigkeit dieser Art der Abfrage, oder gibt es eine andere Möglichkeit, wie kann ich zum Beispiel die Vereinfachung der Abfrage und den rest auf php-engine, um die Ergebnisse zu Sortieren..

Oh, Iam wirklich ratlos in dieser.. Teilen Sie Ihre Weisheit peple, bitte...

Vielen Dank im Voraus

  • nicht verwenden * verwenden Sie nur die Felder, was u wollen
  • und ausführen zu erklären, um zu sehen, was passiert
  • add unique-oder primary-index für Ihre Tabelle.
  • poste bitte die Tabelle schema. Es ist möglich, dass Sie ein set-up, die möglicherweise profitieren von beweglichen einige Spalten auf separate Tabellen. Zweitens, poste bitte die EXPLAIN Abfrage.
  • Hast du 3 Auswahl Bedingungen und ein string-Vergleich startet mit einer wildcard und ein ORDER BY - Klausel. Es ist nicht verwunderlich, dass Ihre Anfrage nicht schnell.
  • Sie können auch einen Blick auf: ajaxline.com/32-tips-to-speed-up-your-mysql-queries
  • genau, nicht nur das, sondern es gibt vier ORDER BY Klauseln! Brauchen wir wirklich zu sehen, das schema. Dass LIKE Klausel in es ist auch wirklich die Dinge verlangsamen

InformationsquelleAutor user1768510 | 2012-10-24
Schreibe einen Kommentar