テストを問い合わせる最近、私は上司、男性のオフィスに引っ張られて、私のクエリのいずれかがシステムを遅くしていることを言われました。私はWHERE
句が1 = 1
で始まったからだと言われました。私のスクリプトでは、各検索語をクエリに追加していたので、1 = 1
を追加して、各検索語の前にAND
を追加するだけでした。結果が絞り込まれる前に、これが原因で問合せが完全な表スキャンを実行していると言われました。MySQLはWHERE句の検索時間
私はこれをテストすることにしました。約14,000レコードのuser
テーブルがあります。クエリは、phpmyadminとPuTTYの両方を使用してそれぞれ5回実行されました。 phpmyadminではクエリを500に制限しましたが、PuTTYでは制限はありませんでした。私はいくつかの基本的なクエリを試し、それらの時間を計時しようとしました。私は、1 = 1
が、WHERE
句のまったくないクエリよりも高速にクエリを実行しているように思えました。これはライブデータベース上にありますが、結果はかなり一貫しているようでした。
私はここに投稿し、誰かが私のために結果を打破するか、私にはこれのいずれかの側のロジックを説明できるのいずれかどうかを確認するために期待していました。
あなたの結果がより速い結果を示したら、それは問題ではありません、それを遅くしているデータを分析しましたか?時間を計るために何を使いましたか? – VoodooChild
私はWHERE句で1 = 1を使うことについて人々がどのように考えているかを知ることがより興味があります。あなたは正しいのですが、私の結果から、それはより速く見えます。それが私を幸せにしますが、私は多分何らかの正当化を望みます。いずれのプログラムでも、クエリが実行された後、「クエリにはx秒かかる」と表示されます。私はそれで十分だろうと思った。 –