MySQL 查询优化之 or

WBOY
リリース: 2016-05-31 08:48:54
オリジナル
1889 人が閲覧しました

当使用or的时候是不会用到索引的

mysql> explain SELECT * FROM aladdin_resource WHEREstate = 1 OR state = 2;+----+-------------+------------------+------+---------------+------+---------+------+-------+-------------+| id | select_type | table| type | possible_keys | key| key_len | ref| rows| Extra |+----+-------------+------------------+------+---------------+------+---------+------+-------+-------------+|1 | SIMPLE| aladdin_resource | ALL| state | NULL | NULL| NULL | 59074 | Using where |+----+-------------+------------------+------+---------------+------+---------+------+-------+-------------+1 row in set (0.00 sec)
ログイン後にコピー

解决办法就是用union替换or

explain select * from aladdin_resource where state=1 union select * from aladdin_resource where state=2;+----+--------------+------------------+------+---------------+-------+---------+-------+-------+-------------+| id | select_type| table| type | possible_keys | key | key_len | ref | rows| Extra |+----+--------------+------------------+------+---------------+-------+---------+-------+-------+-------------+|1 | PRIMARY| aladdin_resource | ref| state | state | 2 | const | 383 | Using where ||2 | UNION| aladdin_resource | ref| state | state | 2 | const | 21370 | Using where || NULL | UNION RESULT | <union1> | ALL| NULL| NULL| NULL| NULL|NULL | |+----+--------------+------------------+------+---------------+-------+---------+-------+-------+-------------+3 rows in set (0.05 sec)</union1>
ログイン後にコピー

高下立判

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート