为了账号安全,请及时绑定邮箱和手机立即绑定

另外就是 mysql 优化器会自动调整 where 条件的前后顺序吗?

另外就是 mysql 优化器会自动调整 where 条件的前后顺序吗?

江户川乱折腾 2023-04-26 18:14:01
where a=1 and b=1where b=1where b=1 order by time desc请问这三条sql 如何建索引只建一条怎么建
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超5个赞

b_time

btimea对于第一个查询还是用不上a的index,只能用b的。

第2个和第3个都全能用了。

两个的话就好弄了 ab 和btime。


查看完整回答
反对 回复 2023-04-29
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

一条的话 ... Index( b, time, a ) 联合索引 ...

MySQL 优化器不会自动调整 WHERE 的先后顺序 ... 所以需要你自己写的时候注意 ...


查看完整回答
反对 回复 2023-04-29
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

具体问题具体分析吧,mysql版本之间的差别比较大,需要针对不同的版本要看对索引的支持如何,
这三条查询中,b字段的查询频率最高,所以b字段要加入到索引中,多列索引中,索引的列顺序很重要。
只想建立单个索引,index(b,time)最合适。
“where a=1 and b=1”应该改为“where b=1 and a=1”

查看完整回答
反对 回复 2023-04-29
  • 3 回答
  • 0 关注
  • 314 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信