Ich habe eine Abfrage
%Vor%Kann ich einen EXPLAIN-Plan von MySQL bekommen, ohne einen Wert für den Parameter einzugeben?
Solange Sie nur ein equals tun (und nicht ein like, das Kurzschlüsse beeinflussen kann), ersetzen Sie es einfach durch einen Wert:
%Vor% Da die Abfrage nicht tatsächlich ausgeführt wird, sollten die Ergebnisse nicht vom tatsächlichen abweichen. Es gibt einige Fälle, in denen das nicht stimmt (ich erwähnte bereits LIKE). Hier ist ein Beispiel für die verschiedenen Fälle von LIKE
:
Foo
- Kann einen Index-Scan verwenden, wenn ein Index existiert. %Foo
- Erfordert einen vollständigen Tabellenscan, selbst wenn ein Index vorhanden ist Foo%
- Kann einen Index-Scan verwenden, abhängig von der Kardinalität des Index und anderen Faktoren Wenn Sie sich verbinden und die Where-Klausel zu einer unmöglichen Kombination führt (und daher einen Kurzschluss verursacht). Zum Beispiel:
%Vor%Wenn der erste und der zweite Parameter gleich sind, hat er einen Ausführungsplan, und wenn sie unterschiedlich sind, wird er kurzgeschlossen (und gibt 0 Zeilen zurück, ohne irgendwelche Daten zu treffen) ...
Es gibt andere, aber das sind alles, woran ich gerade denken kann ...
Tags und Links mysql sql-execution-plan