2012-08-02 4 views
7

質問は十分に明確にする必要があり、それはクエリ "SELECT 1 ..."に "LIMIT 1"を使用するのは意味がありますか?

SELECT 1 FROM table ...

SELECT 1 FROM table ... LIMIT 1の代わりに使用するための任意の利点がありますか?

+1

これらは2つの非常に異なるものです。最初のクエリは、テーブルのすべてのレコードに対して「1」を取得し、2番目のクエリは1つのレコードのみを返します。だから、他のものの代わりに使用する利点はありますか?いいえ、それは匹敵しません。 – Lamak

+0

@ラーマク:そうです、あなたは正しいです...私はエントリが存在するかどうかを確認することを意味したことを忘れました。 。 – Chris

答えて

12

のは、あなたのテーブルには、万行を持っているとしましょう...

SELECT 1 FROM table ... 

は万回...

SELECT 1 FROM table ... LIMIT 1 

が値1、1時間を返し、値1を返します。あなたはEXISTSチェックに関しては特に興味を持っていることを言及


EDIT

。念頭に置いて、これらの2つのクエリの間の機能差がないこれにように、第1行が、(EXISTSこの場合INよりも効率的である理由である)が見出された後EXISTSは処理を停止:

SELECT * 
FROM tableA ta 
WHERE EXISTS (
    SELECT 1 
    FROM TableB tb 
    WHERE tb.ID = ta.ID 
); 

そして

SELECT * 
FROM tableA ta 
WHERE EXISTS (
    SELECT 1 
    FROM TableB tb 
    WHERE tb.ID = ta.ID 
    LIMIT 1 
); 
+0

完璧な説明、まさに私が知りたかったもの!マイケルありがとう! :) – Chris