碰到的查询的疑问

2021-01-20 16:59:54 +08:00
 wuxi889

今天在做查询优化时,碰到了一个问题:百万级别的索引查询时,SELECT id(主键) 与 SELECT session_id(普通索引) 的查询速度差了一大截,EXPLAIN 的剖析结果两条查询语句是一致的。

SQL1 SELECT id FROM table WHERE path_type='products'; // 耗时 0.5s 左右

SQL2 SELECT session_id FROM table WHERE path_type='products'; // 耗时 7s 左右

EXPLAIN 两个 SQL 相同 1 SIMPLE statistics_page_visits ref statistics_page_visits_path_type_index statistics_page_visits_path_type_index 1023 const 1144028 100.00 Using index

请问造成以上结果的原因是什么 @_@ 晕乎

2157 次点击
所在节点    MySQL
10 条回复
zoharSoul
2021-01-20 17:03:44 +08:00
session_id 要回表
tokyo2020
2021-01-20 17:05:50 +08:00
应该是索引有关? 1,主键就直接返回了 2,session_id 还需要再找到 session_id 的位置再返回 ?
wuxi889
2021-01-20 17:11:13 +08:00
@zoharSoul session_id 作为索引也需要回表吗?
fhsan
2021-01-20 17:13:10 +08:00
什么是回表查询?
什么是索引覆盖?
如何实现索引覆盖?
chendy
2021-01-20 17:40:56 +08:00
这么离谱的差距…
盲猜 id 是个数字,session_id 是个挺长的字符串,查询返回的数据量又大,网络瓶颈导致等了那么久……
zoharSoul
2021-01-20 17:46:10 +08:00
@wuxi889 除非 session_id 和 path_type 在一个联合索引上...
fengpan567
2021-01-20 17:52:18 +08:00
id 是也有聚簇索引的,不用回表查询
geekzhu
2021-01-20 18:13:58 +08:00
session_id 和 path_type 是一个索引吗
Hurriance
2021-01-20 18:16:38 +08:00
楼主可以贴一下 table 的 DDL
zhangysh1995
2021-01-21 13:44:16 +08:00
贴 show create table

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/746749

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX