Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Leistungsauswirkungen für die mysql-Tupelsuche verstehen

Laut dieser Frage , ist die Unterstützung für Tupel in MySQL nicht optimiert. Wie @O.Jones in seinem Kommentar schreibt, ist der Abfrageplaner in MySQL ein mächtig komplexes Ungetüm und Dinge, die sollten verhalten sich nicht immer so, wie Sie es vielleicht erwarten.

Ich glaube, Ihre zweite Abfrage ist schneller, weil die erste Where-Klausel dept_id in (101, 103) reduziert den Suchraum für den zweiten, der die Tupel verwendet. Der Abfrageoptimierer sollte tun dies automatisch, aber zumindest in Ihrem Beispiel nicht.

Ich glaube dem IN nicht -Klausel ist das Problem - es ist der Tupelvergleich, der die gesamte Tabelle durchsucht und keine verfügbaren Indizes verwendet.