MySQL对OR条件查询不支持优化,会进行全表扫描

MySQL对OR条件查询不支持优化,会进行全表扫描:explain extended select * from like1 where name like 'abc%';例如:+----+-------------+-------+-------+---------------+-----------+---------+------+------+----------+-----------------------+| id | select_type | t...显示全部
MySQL对OR条件查询不支持优化,会进行全表扫描:
explain extended select * from like1 where name like 'abc%';
例如:
+----+-------------+-------+-------+---------------+-----------+---------+------+------+----------+-----------------------+
| id | select_type | table | type  | possible_keys | key       | key_len | ref  | rows | filtered | Extra                 |
+----+-------------+-------+-------+---------------+-----------+---------+------+------+----------+-----------------------+
|  1 | SIMPLE      | like1 | range | nameindex     | nameindex | 23      | NULL |    1 |   100.00 | Using index condition |
+----+-------------+-------+-------+---------------+-----------+---------+------+------+----------+-----------------------+
1 row in set, 1 warning (0.00 sec)

explain extended select * from like1 where name like 'abc%' or name > 1;
+----+-------------+-------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | like1 | ALL  | nameindex     | NULL | NULL    | NULL |    1 |   100.00 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+------+----------+-------------+
1 row in set, 2 warnings (0.01 sec)


大家还有那些对MySQL , OR方面的优化可以讨论?收起
参与11

查看其它 4 个回答特种兵1的回答

特种兵1特种兵1数据库开发工程师南京橙红软件有限公司
name 是 字符型的 name>1 会将name 转换成 数值类型 如 cast('5' as signed )=5 ,cast('52sdf' as signed )=52  ,mysql 对索引字段使用函数是 不走索引
软件开发 · 2015-07-01
浏览1193

回答者

特种兵1
数据库开发工程师南京橙红软件有限公司

特种兵1 最近回答过的问题

回答状态

  • 发布时间:2015-07-01
  • 关注会员:3 人
  • 回答浏览:1193
  • X社区推广