いつもinの方が効率が良いと思っていたのですが、今回はちょっと迷ってしまいました。
SELECT * FROM runinfo WHERE status in (0,2,1,3,4,7,9,10);
このクエリの効率は、多くの場合 1 秒を超えます。
mysql> SELECT * FROM runinfo WHERE status in (0,2,1,3,4,7,9,10);
106 rows in set (1.20 sec)
以下の記述方法に置き換えたところ、
SELECT * FROM runinfo WHERE status = 0 union SELECT * FROM runinfo WHERE status = 1 union SELECT * FROM runinfo WHERE status = 2 union SELECT * FROM runinfo WHERE status = 3 union SELECT * FROM runinfo WHERE status = 4 union SELECT * FROM runinfo WHERE status = 7 union SELECT * FROM runinfo WHERE status = 9 union SELECT * FROM runinfo WHERE status = 10
の効率が大幅に向上しました。
rreee具体的な理由は言えませんが、ステータス フィールドにはインデックスが付けられており、このフィールドは更新される予定です。
最初に記録を作成し、後で理解します。
以上がUnion と in を使用するのはどちらが効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。