2016-06-16 10 views
0

Auf der Suche nach einer besseren Ausführung und Abrufzeit für diese Abfrage würde sogar Vorschlag zum Neuschreiben schätzen. DankSQL-Anweisung auf Mysql für die Schule

SELECT * 
    FROM job.FilledApplication FA 
    JOIN job.InterviewedCandidatelist ICL ON ICL.FilledApplicationDate =FA.Date  
    JOIN job.SelectedCandidate SC ON ILC.ID = SC.InterviewedCandidateid 
Where FA.Date > 12458756236442 
ORDER BY FA.Date DESC LIMIT 100000; 
+1

statt SELECT *, besser Spalten erwähnen – Sami

Antwort

0

Jedes Mal, wenn mit nur einer Bedingung> oder < verwenden Sie Bereichsscans (vorausgesetzt, Sie einen Index auf dem Feld haben). Manchmal hilft es, den Bereich mit dem größten Wert im Feld zu begrenzen, damit der Optimierer besser weiß, wie der Scan ausgeführt wird. Zum Beispiel, wenn Sie wissen, dass Sie einen kontinuierlichen Bereich haben Sie diese Informationen in Ihrer Anfrage auch Sie wie folgt verwendet werden:

SELECT * 
    FROM job.FilledApplication FA 
    JOIN job.InterviewedCandidatelist ICL ON ICL.FilledApplicationDate =FA.Date  
    JOIN job.SelectedCandidate SC ON ILC.ID = SC.InterviewedCandidateid 
Where FA.Date > 12458756236442 AND FA.Date <= (12458756236442+100000) 
ORDER BY FA.Date DESC LIMIT 100000; 

Also denken Sie darüber, was Sie wissen von den Daten, und dann Anwendung, wenn.

Und schauen immer auf die Indizes und kümmern Sie entsprechende diejenigen haben (On Joinbedingungen, in denen die Bedingungen, optionale Gruppe von Bedingungen oder Reihenfolge von Bedingungen)

+0

Die Abfrage führt besser auf der Innodb-Engine als seine native ndb-Engine neben den offensichtlichen Join-Probleme, ich sehe nicht, warum die Abfrage 10000% schneller ist für die gleiche Anzahl von Zeilen – Russia

+0

Meinst du die Abfrage in meiner Antwort oder Ihre Abfrage in den beiden Szenarien? Wenn Sie Ihre Abfrage meinen, versuchen Sie meine auch in beiden Szenarien: Die obere Grenze (wie seltsam es auch aussehen mag) gibt den meisten Abfrageoptimierern eine bessere Handhabe, um Ihnen den besseren Plan zu geben. Eine andere Möglichkeit, die gleiche/ähnliche Leistung zu erzielen, ist: Achten Sie darauf, dass die Histogramminformationen auf dem neuesten Stand sind, und passen Sie die Zeit an, die der Optimierer zum Ermitteln des Abfrageplans verwenden darf (Letzterer ist für den Produktionseinsatz nicht wirklich nützlich) gebe dir die Grundursache) –

Verwandte Themen