mysql 索引优先级规则

匿名旅途 2012-09-15 12:14:04
mysql 索引优先级规则是如何的?

例如:
索引1:名字为a, 索引字段(qq,ww,ee,rr)
索引2:名字为b, 索引字段(qq,ww,ee,tt)

在执行一条查询语句,用到qq,ww,ee这3个索引

mysql如何去选择a或者b呢
...全文
889 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
匿名旅途 2012-09-17
  • 打赏
  • 举报
回复
举例说明呢[Quote=引用 1 楼 的回复:]

mysql会判断用哪个代价小 用代价小的
[/Quote]
匿名旅途 2012-09-17
  • 打赏
  • 举报
回复
你是说会根据你查询的结果数来选择?哪个索引的结果少就用哪个?[Quote=引用 2 楼 的回复:]

那个最少的查询那个就先用到索引。
[/Quote]
匿名旅途 2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

这两个索引对 where qq = ? and ww =? and ee =?

在WHERE语句上的优化相同,然后MYSQS会根据你的 select ... 中的输出列来断定用哪一个索引,或者和其它表JOIN时哪个索引更有利。
如果语句仅仅是
select * from xxx where qq = ? and ww =? and ee =?

则MYSQL会随机选择一个索引,一般……
[/Quote]

场景:
------------------------------
aa表中字段(aa_id,aa_cash,in_time,temp_id,gg_id,out_cash)aa_id是主键
bb_class表中字段(gg_id,gg_name) gg_id是主键
aa表的索引:
(1)temp_id,in_time, gg_id,aa_cash
(2)temp_id,in_time, gg_id,out_cash
查询语句:
select count(aa_id) from aa a,bb_class b where b.aa_id=4 and a.temp_id=30 and a.in_time > now() and a.gg_id =b.gg_id;
这样来说,mysql会只能去选择查询会比较快的索引?、
求解
Rotel-刘志东 2012-09-15
  • 打赏
  • 举报
回复
那个最少的查询那个就先用到索引。
rucypli 2012-09-15
  • 打赏
  • 举报
回复
mysql会判断用哪个代价小 用代价小的
ACMAIN_CHM 2012-09-15
  • 打赏
  • 举报
回复
这两个索引对 where qq = ? and ww =? and ee =?

在WHERE语句上的优化相同,然后MYSQS会根据你的 select ... 中的输出列来断定用哪一个索引,或者和其它表JOIN时哪个索引更有利。
如果语句仅仅是
select * from xxx where qq = ? and ww =? and ee =?

则MYSQL会随机选择一个索引,一般是已加载在内存中的或者第一个。

56,679

社区成员

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

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