索引的缺点(1):需要占用磁盘空间

索引的其中一个缺点就是需要占用磁盘空间。

这个缺点是其他 优点的基础,因为任何一种机制,不可能只有优点,而没有缺点,正因为创建索引,就是把排序后组织成B树的数据,放到磁盘上,才有了索引,才有可能运用索引的各种优势。

既然是索引,就一定会占用空间,那么这里的主要问题就成了如何减少占用的空间?


(1)减少字段个数

如果索引中包含了很多字段,比如:A表,一共有20个字段,而创建的索引中包含了10个字段,那么会导致索引占用的空间,接近于表的空间,整个索引的层数会增加,同样找一条数据,需要更多IO,速度更慢。

是否索引中真的需要包含那么多的字段?

可以从需求角度分析,本来想让索引覆盖整个查询,但实际上真正起到过滤作用的字段,也就是放到where条件中的只有2个,那么,这个索引最好就是这2个字段,其他字段,可以通过回表来获取。


(2)占用字节数少的字段

对于where 条件中的字段,不受这个限制,就算占用字节数较多,也得放到索引中。

但是对于 select count(*) from tb 这种查询,可以在占用字节数最少的字段上创建索引。

比如:A表里有很多字段,其中 ID是numeric(10),flag是 tinyint,biz_date是datetime,name是varchar(30),memo是varchar(500)。

那么可以在flag字段上创建索引,可以显著加快select count(*) from tb查询的速度,因为flag字段的类型是tinyint,只占用1个字节,所以用这个字段创建的索引,体积会很小。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值