使用数据库索引真的可以提高搜索效率吗?

1年前 4400次浏览

以前数据库记录数也就万把条,所以一直没有对数据库使用索引功能,但是最近数据库记录数过百万了,所以很明显发现查询效率慢了。

首先:看一下没做索引时的情况,当我使用count(*)查询记录数:

当我直接查询整个表所有记录数时耗时极短。

temp.jpg

但是当指定字段查询(如指定openid字体为指定值)时,查询花了近300多毫秒,这个表我总共46万数据耗时300多毫秒,又把这个表的数据增加了2倍,再查询耗时居然是900多毫秒。

temp.jpg

temp.jpg

这样就太慢了。于是设置openid字段索引。再执行上面的查询,查询效率提升得非常明显:

temp.jpg

从这种情况下看,索引字段真的能够让查询效率极大地提升。

但是如果使用不等于查询,那么就没有多少用处,效率较低:

temp.jpg

这里我得出一个总结,最好不要在查询中使用不等于来查询,但是如果实在是需要查询不等于,如果是像我这样需要查询字段总数的,可以先查询总数,再查询等于的数,那么不等于的总数就是总数-等于数。这样效率也还高。

temp.jpg

当然此种做法只适用于查询总数。

那使用like查询时索引有没有效果呢?这里测试一下:

like查询时分三种情况:%前置、后置%、前后都有%,如果前置了%则索引将会无效。

temp.jpg

再看一下多个字段索引查询情况:

当需要使用tmid与openid共同查询时,可以使用这两个字段创建索引。

temp.jpg

经过测试,多字段索引中的第一个字段也可以当单字段索引,如上面openid,tmid双字段索引,那么这种情况下openid也可以有效的,但是tmid无效。

temp.jpg

总结:索引确实在某些情况下可以极大地提升查询效率,适当使用索引会极大地提高查询效率。

声明:本人没系统学过数据库,这些只是个人实践应用的经验,如果有不对的地方,还请指出。

相关评论
暂无相关评论...
发表评论
评论说明:

1、评论暂仅只持纯文字评论。

2、请不要发表与内容无关的评论。

3、评论需要经由审核才能显示出来。

4、评论姓名与链接无要求,只要评论内容符合便可审核通过。