Wenn Sie LIMIT
die Leistung verbessern möchten , benötigen Sie
- Verstehen Sie die Daten, die Sie abrufen
- Richtige Indizierung der richtigen Reihenfolge der Spalten
- Übernehmen Sie die Verantwortung für das Refactoring der Abfrage
- Verwendung
LIMIT
vorJOIN
Diese Prinzipien können einen langen Weg gehen, wenn Sie sie orchestrieren können.
Ich habe diese Konzepte gelernt, indem ich mir dieses YouTube-Video angesehen habe (hör dir den französischen Akzent genau an).
Ich habe diese Konzepte verwendet, um eine sehr schwierige StackOverflow-Frage zum Abrufen der 40 wichtigsten Artikel aus einigen Tabellen zu beantworten: 12. Mai 2011: Abrufen einer einzelnen Zeile aus der Join-Tabelle .
In meiner Antwort auf diese Frage (16. Mai 2011) habe ich die folgende Abfrage geschrieben und gründlich getestet:
SELECT
AAA.author_id,
AAA.date_created,
IFNULL(BBB.title,'<NO_TITLE>') title,
IFNULL(CCC.filename,'<NO-IMAGE>') filename,
IFNULL(CCC.date_added,'<NO-IMAGE-DATE>') image_date
FROM
(
SELECT
AA.id,
AA.date_added,
BB.author_id,
BB.date_created
FROM
(
SELECT
A.id,IFNULL(MAX(B.date_added),'1900-01-01 00:00:00') date_added
FROM (SELECT id FROM articles ORDER BY date_created DESC LIMIT 40) A
LEFT JOIN article_images B ON A.id = B.article_id
GROUP BY A.id
) AA
INNER JOIN articles BB USING (id)
) AAA
LEFT JOIN article_contents BBB ON AAA.id=BBB.article_id
LEFT JOIN article_images CCC
ON (AAA.id=CCC.article_id AND AAA.date_added=CCC.date_added)
ORDER BY AAA.date_created DESC;
Bitte beachten Sie die Zeile in der Abfrage mit dem LIMIT
FROM (SELECT id FROM articles ORDER BY date_created DESC LIMIT 40) A
Diese Unterabfrage ist drei Ebenen tief vergraben. Dadurch konnte ich die letzten 40 Artikel verwenden LIMIT
. Danach habe ich die notwendigen JOINs durchgeführt.
GEWONNENE ERKENNTNISSE
- Das
LIMIT
Durchführen von Unterabfragen ist aufgrund der Kardinalität der Indizes, des Dateninhalts und der Größe der Ergebnismenge aus dem möglicherweise nicht immer die Antwort LIMIT
. Wenn Sie alle Ihre "Enten in einer Reihe" haben (beachten Sie die vier Prinzipien für Ihre Abfrage), können Sie überraschend gute Ergebnisse erzielen.
- Machen Sie Ihre Abfragen so einfach wie möglich,
LIMIT
indem Sie nur Schlüssel sammeln.
LIMIT
die Effizienz verbessern: Optimieren von LIMIT-Abfragen