建索引_SQL优化(4):⾯试问多个单字段索引与多字段联合
索引哪个快
为了提⾼数据库效率,建索引是很必要的;
⾯试必问:当查询条件为2个及以上时,是创建多个单列索引还是创建⼀个联合索引好呢?他们之间的区别是什么?
编译器分为哪些阶段哪个效率⾼呢?
单列索引和组合索引的概念
单列索引:即⼀个索引只包含单个列,⼀个表可以有多个单列索引。
组合索引:即⼀个索引包含多个列。
简单理解
如果查询where条件只有⼀个,完全可以⽤单列索引,这样的查询速度较快,索引也⽐较瘦⾝。
offsetof宏定义
如果业务场景是需要经常查询多个组合列,不要试图分别基于单个列建⽴多个单列索引
mysql面试题csdn
(因为虽然有多个单列索引,但是MySQL只能⽤到其中的那个它认为似乎最有效率的单列索引)。
这是因为当SQL语句所查询的列,全部都出现在复合索引中时,此时由于只需要查询索引块即可获得所有数据,当然⽐使⽤多个单列索引要快得多。
重点来了
多个单列索引在多条件查询时只会⽣效⼀个索引!
sqlserver convert
所以多条件联合查询时最好建联合索引!
同时存在联合索引和单列索引(字段有重复的),这个涉及到mysql本⾝的查询优化器策略了, Mysql 根据查询语句的成本来选择⾛哪条索引;可以使⽤explain查看索引具体使⽤情况,⼀般取索引最⾼效的那个,⽐如索引中重复数据少的
servlet的生命周期和路径联合索引本质
当创建(a,b,c)联合索引时,相当于创建了(a)单列索引,(a,b)联合索引以及(a,b,c)联合索引
想要索引⽣效的话,只能使⽤ a和a,b和a,b,c三种组合;
就是常说的最左前缀原则:
在创建联合索引时,要根据业务需求,where⼦句中使⽤最频繁的⼀列放在最左边。
磁盘空间占⽤情况
联合索引⽐对每个列分别建索引更有优势,因为索引建⽴得越多就越占磁盘空间,在更新数据的时候速度会更慢。
csdn公司⾯试喜欢问这个。
感谢收看本期Q程序员说,最后别忘点赞加关注哈!我接着继续整,有啥不爽留⾔。
serve with distinction

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。