MYSQL数据库索引请教

安静写代码 2016-08-12 11:48:41
今天突然和同事聊到数据库索引的问题,突然发现虽然经常提到但是好像知之甚少,发帖请教:
场景如下:
数据库表: testA
字段:D1,B2,N3
索引1:D1_Index
索引2:B2_Index
索引4:D1_B2_Index

以下几句SQL执行时,是否会用到索引,使用的哪个索引?

1、select D1 from testA
2、select N3 from testA
3、select D1,N3 from testA
4、select D1,B2,N3 from testA
5、select D1 from testA where B2 ='xxx'
6、select N3 from testA where B2 ='xxx'
7、select D1,B2,N3 from testA where B2 ='xxx'

如果有一个SQL(S)查询中包含两个子查询 (S1、S2),S1与S2子查询单独执行时,可以使用索引索引,在执行S时,S1与S2的索引还会生效么?
...全文
339 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2016-08-20
  • 打赏
  • 举报
回复
其实索引的本质,就是表中可能会有很多字段,而索引包含几个字段,所以,索引占用的空间更少,访问索引就更快,而没必要 去访问整个表。 然后,就是索引有顺序的,所以比较起来速度更快。
rucypli 2016-08-12
  • 打赏
  • 举报
回复
先整明白索引的原理 一切问题就迎刃而解
zjcxc 2016-08-12
  • 打赏
  • 举报
回复
是否有索引,除了跟 SQL 语句有关之外,还跟表中的数据和主键定义有关 比如 7 的那个,如果表中满足条件的数据极少,那么通常会走索引,如果当满足条件的数据极多,那么通常不走索引
zjcxc 2016-08-12
  • 打赏
  • 举报
回复
自己用 explain select ... 看执行计划

56,679

社区成员

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

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