Reihenfolge der Bedingungsausführung in MySQL

8

Angenommen, ich habe eine MySQL-Abfrage mit zwei Bedingungen:

%Vor%

Die erste Bedingung wird offensichtlich viel billiger sein als die zweite, also möchte ich sicher sein, dass sie zuerst läuft und den Pool von Zeilen begrenzt, der mit der LIKE-Klausel verglichen wird. Laufen MySQL-Abfragebedingungen in der Reihenfolge, in der sie aufgelistet sind, oder gibt es eine Möglichkeit, die Reihenfolge anzugeben?

    
wyatt 30.11.2011, 14:30
quelle

3 Antworten

6

MySQL hat einen internen Abfrageoptimierer, der sich in den meisten Fällen um solche Dinge kümmert. In der Regel müssen Sie sich also keine Sorgen machen.

Aber natürlich ist der Abfrageoptimierer nicht narrensicher. Also ...

Tut mir leid, dass ich Ihnen das antut, aber Sie sollten sich mit EXPLAIN vertraut machen, wenn Sie vermuten, dass eine Abfrage möglicherweise nicht so effizient läuft, wie sie sollte.

Ссылка

    
Trott 30.11.2011, 14:35
quelle
6

Der Optimierer wertet die WHERE-Bedingungen in der richtigen Reihenfolge aus.

SQL ist deklarativ : Sie sagen dem Optimierer was Sie wollen, nicht wie man es macht.

In einer prozeduralen / imperativen Sprache (.net, Java, php usw.) sagt man dann wie und würde auswählen, welche Bedingung zuerst ausgewertet wird.

Hinweis: "left to right" gilt in bestimmten Ausdrücken wie (a+b)*c , wie Sie es erwarten würden

    
gbn 30.11.2011 14:42
quelle
1

Wenn Sie Zweifel an der MySQL-Verwendung des Index haben, können Sie vorschlagen, welcher Index verwendet werden soll.

Ссылка

    
catalinux 30.11.2011 14:37
quelle

Tags und Links