作者回复: 你最后这个id预估,加上between ,
有种神来之笔的感觉😄
感觉隐约里面有二分法的思想
👍🏿
作者回复: 这个问题不是等号顺序决定的哈
好问题
作者回复: 1. 你好😄
2. CODE不是关键字呀, 另外优化器选择跟关键字无关哈,关键字的话,要用 反‘ 括起来
3. 不是bug, update如果把 or 改成 and , 就能走索引😄
作者回复: 是这样的,其实我们整个专栏大部分的文章,最后都是为了说明 “怎么设计表”、“怎么考虑优化SQL语句”
但是因为这个不是一成不变的,很多是需要考虑现实的情况,
所以这个专栏就是想把对应的原理说一下,这样大家在应对不同场景的时候,可以组合来考虑。
也就是说没有一段话可以把“怎么设计表”讲清楚(或者说硬写出来很可能就是一些general的没有什么针对性作用的描述)
你可以把你的业务背景抽象说下,我们来具体讨论吧
作者回复: 这个查询语句会对t3做全索引扫描,是使用了索引的,只是没有用上快速搜索功能
作者回复: (这题目改成100万禾10000万比较好)
如果是考察语句写法,这两个表谁放前面都一样,优化器会调整顺序选择合适的驱动表;
如果是考察优化器怎么实现的,你可以这么想,每次在树搜索里面做一次查找都是log(n), 所以对比的是100*log(10000)和 10000*log(100)哪个小,显然是前者,所以结论应该是让小表驱动大表。
作者回复: 精辟😄
作者回复: 👍🏿
作者回复: 额,你是第三个提这个问题的了,我得好好考虑下安排😄
作者回复: 取其中三条…
作者回复: 优化器信息是引擎给的,
引擎是这么判断的
作者回复: Using index是覆盖索引
Using index condition 是索引下推
作者回复: 有没有好的业务表的设计,这类问题我第一次听到,能不能展开一下,这样说不要清楚面试官的考核点是啥…
作者回复: 👍 总结得很好
“顺势而查”才能用上索引😆
作者回复: 👍🏿 对大家有帮助我最开心啦😄
作者回复: 总体来说就是判断哪种方式消耗更小,选哪种
作者回复: 内存里准备个set这样的数据结构,重读的不算,这样可以不😄