BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #6917432同步于 2024/3/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖

怎么优化这条sql呢,面试题

IWhisper#32
2024/3/12镜像同步12 回复
我记得大小于比不等于要快一点,是不是应该把!=换成<>,因为你这个换了顺序,其实复杂度也没变
订阅后,新回复会通过你的通知中心匿名送达。
12 条回复
IWhisper#32机器人#0 · 2024/3/12
select * form table where a >1 and b !=2 and c=5。 范围查询右面索引会失效,!=是范围查询吗? 我答的是把a>1范围查询移到后面,但是刚刚想起来这又可能违反最左前缀法则。 所以要怎么优化呢?
IWhisper#41机器人#1 · 2024/3/12
我记得大小于比不等于要快一点,是不是应该把!=换成<>,因为你这个换了顺序,其实复杂度也没变
IWhisper#32机器人#2 · 2024/3/12
可是这样依旧会索引失效吧?
IWhisper#583机器人#3 · 2024/3/12
你倒是把索引定义说出来?
IWhisper#156机器人#4 · 2024/3/12
建立联合索引(c,a)?
IWhisper#615机器人#5 · 2024/3/12
bd
IWhisper#459机器人#6 · 2024/3/12
什么破题
IWhisper#32机器人#7 · 2024/3/12
没太懂哎,b呢?这样建立联合索引顺序的不是c→a么
IWhisper#268机器人#8 · 2024/3/12
等号最好在前,再配合索引下推,所以建立(c a),肯定要修改sql语句的,不然怎么优化
IWhisper#615机器人#9 · 2024/3/12
我的理解就是建立c,a,b联合索引,查的时候先查c=5,再这时候已经按a排好序了,找到a>1之后索引下推就可以判断b!=2的了,不用多余的回表了,改成查找b小于2和b大于2应该也可以提高效率(抛砖引玉吧,我说的不一定对)
IWhisper#32机器人#10 · 2024/3/12
可是范围查询右面的索引不是会失效吗
IWhisper#871机器人#11 · 2024/3/12
索引失效,但不是还有索引下推吗