MySQL 5.7使用or是否会用到索引并提高查询效率的理(3)

mysql> explain select a.pad,a.c from sbtest1 a,sbtest2 b where a.id=b.id and a.c='123' union all select a.pad,a.c from sbtest1 a,sbtest2 b where a.id=b.id and b.c='1234';
+----+-------------+-------+------------+--------+---------------+---------+---------+-----------+------+----------+-------------+
| id | select_type | table | partitions | type  | possible_keys | key    | key_len | ref      | rows | filtered | Extra      |
+----+-------------+-------+------------+--------+---------------+---------+---------+-----------+------+----------+-------------+
|  1 | PRIMARY    | a    | NULL      | ref    | PRIMARY,c_1  | c_1    | 120    | const    |    1 |  100.00 | NULL        |
|  1 | PRIMARY    | b    | NULL      | eq_ref | PRIMARY      | PRIMARY | 4      | test.a.id |    1 |  100.00 | Using index |
|  2 | UNION      | b    | NULL      | ref    | PRIMARY,c_2  | c_2    | 120    | const    |    1 |  100.00 | Using index |
|  2 | UNION      | a    | NULL      | eq_ref | PRIMARY      | PRIMARY | 4      | test.b.id |    1 |  100.00 | NULL        |
+----+-------------+-------+------------+--------+---------------+---------+---------+-----------+------+----------+-------------+

在or的条件不在同一个表的情况下 使用union all来改写扫描行数减少且会走索引。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6bf9ce9950a833a8bc57ea2c83f52062.html