Mysql索引的使用

yangnianbing110 2013-11-14 11:42:04
看到高性能mysql里面说
索引列如果不能是表达式的一部分或者为函数的参数时不会使用到索引。
select actor_id from sakila.actor where actor_id + 1 = 5;
不会使用到actor_id上面的索引,但是我自己试了一下,貌似可以用啊,
...全文
163 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2013-11-15
  • 打赏
  • 举报
回复
引用 6 楼 yangnianbing110 的回复:
[quote=引用 5 楼 ACMAIN_CHM 的回复:] 贴出 explain select actor_id from sakila.actor where actor_id + 1 = 5; 以确定的确用到了索引。
mysql> explain select * from test where substr(stat_day, 0 ,5) = '20131'\G; *************************** 1. row *************************** id: 1 select_type: SIMPLE table: test type: index possible_keys: NULL key: test key_len: 10 ref: NULL rows: 3 Extra: Using where; Using index 1 row in set (0.00 sec) [/quote]建议提问时保持例子问题的一惯性。你的例子和你顶楼的已经不是一个语句了。 请同时贴出 explain select .... show index from ...
roypayne0305 2013-11-15
  • 打赏
  • 举报
回复
书的意思是,你自己写SQL要注意这些问题,例如 不能是表达式的一部分、函数的参数。
yangnianbing110 2013-11-15
  • 打赏
  • 举报
回复
引用 7 楼 zuoxingyu2012 的回复:
你的案例中用到的是”覆盖索引“。用到覆盖索引到底算不算使用了索引呢?
我百度了一下,覆盖索引就是通过索引获得数据,而并不是去获取整个数据行,既然是通过索引获取数据,那也是使用到了索引吧
珠海-天堂 2013-11-15
  • 打赏
  • 举报
回复
你的案例中用到的是”覆盖索引“。用到覆盖索引到底算不算使用了索引呢?
yangnianbing110 2013-11-15
  • 打赏
  • 举报
回复
引用 5 楼 ACMAIN_CHM 的回复:
贴出 explain select actor_id from sakila.actor where actor_id + 1 = 5; 以确定的确用到了索引。
mysql> explain select * from test where substr(stat_day, 0 ,5) = '20131'\G; *************************** 1. row *************************** id: 1 select_type: SIMPLE table: test type: index possible_keys: NULL key: test key_len: 10 ref: NULL rows: 3 Extra: Using where; Using index 1 row in set (0.00 sec)
yangnianbing110 2013-11-14
  • 打赏
  • 举报
回复
引用 1 楼 rucypli 的回复:
这个actor_id 是不需要转化的 可以直接用
那“索引列如果不能是表达式的一部分或者为函数的参数时不会使用到索引”这句话是不是对的呢?
rucypli 2013-11-14
  • 打赏
  • 举报
回复
这个actor_id 是不需要转化的 可以直接用
ACMAIN_CHM 2013-11-14
  • 打赏
  • 举报
回复
贴出 explain select actor_id from sakila.actor where actor_id + 1 = 5; 以确定的确用到了索引。
liuxinran819 2013-11-14
  • 打赏
  • 举报
回复
是不可以用的 但是你的语句确实用到了 只不过是用的覆盖索引而已 但是无法使用索引树定位这个数据 仍然要逐个值的扫描 你可以试试把SELECT那里写成SELECT * 那样就完全不能用索引了
kobe8free 2013-11-14
  • 打赏
  • 举报
回复
explain select actor_id from sakila.actor where actor_id + 1 = 5; 分析下

56,681

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧