MySQLクエリにLIMIT1を追加すると、1つの結果が見つかった後に検索が停止しますか(したがって高速になります)、それともすべての結果をフェッチして最後に切り捨てますか?
回答:
クエリによっては、制限句を追加するとパフォーマンスに大きな影響を与える可能性があります。1行だけが必要であり(または1行だけがクエリを満たすことができるという事実を知っている)、内部オプティマイザがそれをどのように実行するかわからない場合(たとえば、WHERE句がインデックスにヒットしないなど)、必ずLIMIT句を追加する必要があります。
最適化されたクエリ(小さなテーブルのインデックスを使用)に関しては、おそらくパフォーマンスはそれほど重要ではありませんが、1行だけに関心がある場合は、LIMIT句を追加します。
制限はクエリのパフォーマンスに影響を与える可能性があり(コメントと以下のリンクを参照)、MySQLによって出力される結果セットも減少します。単一の結果を期待するクエリには、利点があります。
さらに、大きな結果セットを転送するとメモリが使用され、ディスク上に一時テーブルが作成される可能性があるため、結果セットを制限すると、実際には合計クエリ時間が短縮される可能性があります。最近、制限を使用しないアプリケーションが膨大な結果セットのためにサーバーを強制終了し、制限が設定されているとリソース使用率が大幅に低下するのを見たので、これについて言及します。
詳細については、このページを確認してください:MySQLドキュメント:LIMIT最適化
返される結果が1つしかない場合は、いいえ、LIMITはそれ以上速くなりません。結果がたくさんあり、最初の結果だけが必要で、GROUPまたはORDER byステートメントがない場合、LIMITを使用すると結果が速くなります。
要するに、答えはイエスです。結果を1に制限すると、1つの結果を「期待」している場合でも、データベースがすべてのレコードを調べないため、クエリが高速になります。クエリに一致するレコードが見つかると、停止します。
UNIQUE
(またはPRIMARY KEY
)制約(またはインデックス)がある場合はそうではありません。stackoverflow.com/questions/8467092/...