数据库为什么要建立索引?

一:什么是索引?

索引(Index)是帮助MySQL高效获取数据的数据结构。

二:为什么要建立索引?

一个没有索引的数据库表就相当于一本没有索引的新华字典,当你想找出其中一个汉字的时候,无异于寻找MH370碎片啊。我们为指定的字段创建索引之后,当我们根据条件查找数据的时候,数据库引擎就可以利用查找算法(二分查找法)很高效的查出来。

三:选择什么字段建立索引

索引也是要占用存储空间的,建立索引的时候也是有一定的规则可寻的。

1)选择一些经常要作为查询条件的字段。

2)选择区分度高的字段,count(distinct 字段)/count(*),当然最小就是1了,也就是唯一索引了。这个值越小,查询的效率越高。当这个值大到一定的程度的时候(具体还不是很清楚),数据库就会放弃索引进行全表扫描。你可以想象一下,如果一个表有一百万的数据,其中有一个性别的字段,这个字段只会出现两个值。然后你为该字段建了一个索引,自以为查询性能提升了N倍。其实,你就相当于把一百万条数据按照性别分别放到两个箱子里面,假设每个箱子里面有50万条性别为男的记录,因为这个箱子里面的性别都是一样的,索引也起不了任何作用了,什么二分查找也用不上了,只能用暴力算法解决咯,全表扫描咯。相反,你可以为一个人的身份证号码建立唯一索引,这样就可以从头到尾用二分查找法查找了,效率杠杠滴。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值