为什么使用mysql索引之后速度下降了80%?

[复制链接]
查看11 | 回复10 | 2021-1-27 07:12:08 | 显示全部楼层 |阅读模式
首先用的机房电脑性能比较差所以就不横向比较了……
数据库作业,数据量是500w条,表结构很简单people(id,name,sex,age)
搜索姓刘的人SELECT*FROM`people`where`name`LIKE'刘%'
建立索引之前:

建立索引之后:

明显看出第二个是使用了索引的因为按照姓名排序了
但是时间……一个10s多一个50s多
为什么?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:12:08 | 显示全部楼层
以文本方式贴出不要贴截图
explainselect...
showindexfrom..
以供分析。

回复

使用道具 举报

千问 | 2021-1-27 07:12:08 | 显示全部楼层

贴出执行计划。
照理500w数据,查出1w多的数据,用索引可以大大提高性能,因为选择性很强。
而且LIKE'刘%'的写法,确实页能用上索引。

回复

使用道具 举报

千问 | 2021-1-27 07:12:08 | 显示全部楼层
其实都是要看执行计划的
可能第一个走了其他索引而你不知道呢,全凭猜测
回复

使用道具 举报

千问 | 2021-1-27 07:12:08 | 显示全部楼层
额额昨天在机房的电脑恐怕有毒,不过我的确是explain过的,第一个没用索引第二个用了索引
回复

使用道具 举报

千问 | 2021-1-27 07:12:08 | 显示全部楼层
今天在宿舍用自己电脑,性能稍微好些,没用索引接近5s,用了索引80多s没出来我停止了……
回复

使用道具 举报

千问 | 2021-1-27 07:12:08 | 显示全部楼层
没用索引:



用索引:




回复

使用道具 举报

千问 | 2021-1-27 07:12:08 | 显示全部楼层
可不可以把表结构也贴出来,我感觉是不是这个名字字段太长了,索引太大
导致range搜索索引效率明显下降,感觉这个表最大的字段应该就是名字这个字段了,如果是的话:这个名字字段所占空间基本可以等于表大小,是不是这样引起的?
回复

使用道具 举报

千问 | 2021-1-27 07:12:08 | 显示全部楼层
引用7楼xiongshao1943的回复:可不可以把表结构也贴出来,我感觉是不是这个名字字段太长了,索引太大
导致range搜索索引效率明显下降,感觉这个表最大的字段应该就是名字这个字段了,如果是的话:这个名字字段所占空间基本可以等于表大小,是不是这样引起的?
这个问题我已经找不到解决办法了……其实也不是表结构问题吧,表结构就那些,序号,姓名(两个随机汉字吧,可能第一个汉字取了一些特殊的姓,但是都是两个字),性别(男女),年龄(1-70随机数)
回复

使用道具 举报

千问 | 2021-1-27 07:12:08 | 显示全部楼层
对几列做了索引?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行