ホームページ  >  記事  >  データベース  >  mysql の or と in の効率を例を使って分析する

mysql の or と in の効率を例を使って分析する

藏色散人
藏色散人転載
2021-09-25 17:12:492283ブラウズ

mysql の or と in の効率を例を使って分析する

mysql における or と in の効率

まえがき

今日、Web サイトが停止するという問題に遭遇しました。数分後には、タイミング スクリプトで SQL を見つけましたが、実行効率が非常に遅いです。DBA が または に変更することを提案したところ、効率が何百倍も向上しました。

シーンの説明

1 2 つのテーブル関連付けクエリ
2.テーブル 1 のデータ量は 100 万に近いです
3.テーブル 2 のデータ量は 900 万に近いです
4.クエリ条件のタイトル フィールドはインデックス化されていません
5.元のクエリ文

SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title="衣服" or b.title="裤子" or b.title="帽子" limit 0,100

6.変換後のクエリ文

SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title IN ("衣服","裤子","帽子") limit 0,100

変換後の効率

元のSQL実行時間は5秒ですが、変更後は5秒のみです。 0.01秒かかるor の効率は O(n) ですが、in の効率は O(logn) ですが、n が大きくなると効率の差がより顕著になります。

推奨学習: 「

mysql ビデオ チュートリアル

以上がmysql の or と in の効率を例を使って分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。