Ich halte es für wichtig, darauf hinzuweisen, auch wenn es in den Kommentaren angesprochen wurde, dass in dieser Situation:
SELECT 1 FROM my_table WHERE *indexed_condition* LIMIT 1
ist überlegen:
SELECT * FROM my_table WHERE *indexed_condition* LIMIT 1
Der Grund dafür ist, dass die erste Abfrage durch den Index erfüllt werden kann, während die zweite eine Zeilensuche erfordert (es sei denn, alle Spalten der Tabelle sind im verwendeten Index enthalten).
Hinzufügen der LIMIT
Klausel ermöglicht es der Maschine, nach dem Auffinden einer beliebigen Zeile anzuhalten.
Die erste Abfrage sollte vergleichbar sein mit:
SELECT EXISTS(SELECT * FROM my_table WHERE *indexed_condition*)
Das sendet die gleichen Signale an den Motor (1/* macht hier keinen Unterschied), aber ich würde trotzdem die 1 schreiben, um die Gewohnheit zu verstärken, wenn ich EXISTS
:
SELECT EXISTS(SELECT 1 FROM my_table WHERE *indexed_condition*)
Es kann sinnvoll sein, die EXISTS
wickeln, wenn Sie eine explizite Rückgabe benötigen, wenn keine Zeilen übereinstimmen.