为何我是用了联合索引后查询速度反而更慢了呢?

有一张数据表,存储大概100w左右的数据。这是sql语句:
select  * from data_value where data_point_id ='41607'  order by create_time  desc limit 0,1;
目前表里只有(除主键外)data_point_id一个索引
explain结果:

查询耗时:

添加联合索引:data_point_id,create_time
alter table data_value add index myindex (data_point_id,create_time)
explain结果:
查询耗时: '0.00032400', 'explain select *from data_value where data_point_id =\'41607\'  order by create_time  desc limit 0,1'
速度反而下降了好多,这是为何
全部评论
实在不行,建议导入 TiDB 中自己 Debug 跑一下。
点赞 回复 分享
发布于 2019-12-07 20:49
是否能够确认使用的索引数据结构,如果可以确认,后续可以分析一下。
点赞 回复 分享
发布于 2019-12-07 20:49
我尝试从数据库系统的运行过程给个思路。针对第一个 SQL,首先进行 TableScan ,读取所有 data_point_id 满足条件的元组,这里行为在其上有索引,所以会变成一个 IndexScan。然后是进行 Order by 操作,返回前两个数据。针对第二个 SQL,构建的索引似乎并不能加速数据定位的过程,首先你是在进行点查询,我认为应该是使用 hash table 作为索引数据结构,这个情况下,索引项的 key 是无序的,因此会抽取所有 data_point_id 满足条件的元组,不管 create_time的情况。因为又有使用 order by,所以使用 B+树 也是有可能的,这种情况下,可能会加速,具体情况我也分析不清楚。个人认为, Hash table 的可能性更大。
点赞 回复 分享
发布于 2019-12-07 20:44

相关推荐

KKorz:是这样的,还会定期默写抽查
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
5376次浏览 53人参与
# 百度工作体验 #
316370次浏览 2232人参与
# 巨人网络春招 #
11602次浏览 232人参与
# 沪漂/北漂你觉得哪个更苦? #
1877次浏览 45人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16954次浏览 137人参与
# 春招至今,你的战绩如何? #
16914次浏览 153人参与
# MiniMax求职进展汇总 #
25507次浏览 323人参与
# 你的实习产出是真实的还是包装的? #
3588次浏览 59人参与
# HR最不可信的一句话是__ #
1221次浏览 34人参与
# AI面会问哪些问题? #
1107次浏览 30人参与
# 你做过最难的笔试是哪家公司 #
1447次浏览 24人参与
# AI时代,哪个岗位还有“活路” #
3149次浏览 55人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
153003次浏览 889人参与
# 简历第一个项目做什么 #
32269次浏览 370人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8078次浏览 44人参与
# 简历中的项目经历要怎么写? #
311361次浏览 4286人参与
# XX请雇我工作 #
51168次浏览 171人参与
# 投格力的你,拿到offer了吗? #
178458次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
77047次浏览 375人参与
# AI时代,哪些岗位最容易被淘汰 #
65091次浏览 921人参与
# 秋招白月光 #
731753次浏览 5441人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187716次浏览 1123人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务