クエリにLIMIT
を追加するとパフォーマンス上のメリットはありますか?またはMySQLが独自に制限を適用しますか?EXISTSクエリでLIMITを使用していますか?
例:
私のクエリでビットをいじるIF EXISTS (
SELECT 1
FROM my_table
LIMIT 1 -- can this improve performance?
)
THEN ... END IF;
クエリにLIMIT
を追加するとパフォーマンス上のメリットはありますか?またはMySQLが独自に制限を適用しますか?EXISTSクエリでLIMITを使用していますか?
例:
私のクエリでビットをいじるIF EXISTS (
SELECT 1
FROM my_table
LIMIT 1 -- can this improve performance?
)
THEN ... END IF;
EXISTS()
の目的は、WHERE
句に一致するそのテーブルのどの行がある場合、それは決めることができる唯一のまで、クエリを実行することです。つまり、論理的にはLIMIT 1
と同じことを行います。 EXISTS
はおそらくsemi-join
と呼ばれることがあります。
ボトムライン:LIMIT 1
をEXISTS()
の内側に使用しないでください。
、私はEXISTS
はまだLIMIT
が0に設定されている場合、私は、これはそれが無視されていたことを示し仮定1を返すことに気づきました。
私は、「LIMIT 0」が異常なエッジケースであることを示唆しています。 –
これは、テーブルのレコード数(my_table)によって異なります。レコードが多すぎないとパフォーマンスは向上しませんが、テーブルのレコードが多すぎるとパフォーマンスが向上しますが、これも表示されますあなたが選択で使用されている列のインデックスを持っているかのように、多くの要素に依存します(これを行う場合、インデックスをカバーする利点も得られます)。
はい...これにより、レコードを制限するため、パフォーマンスが向上します。 –
'EXPLAIN'を使ってみましたか? –
@TimBiegeleisen、はい、それは影響を受けていないようです。 – shmosel