一个 Mysql 索引问题

2019-09-19 17:55:49 +08:00
 dackh

我们都知道 mysql 二级索引的存的是主键值,所以我们一般通过二级索引查询数据时,需要通过主键值再去查一次。

但是现在有一个问题是:例如 sql 是这样的

SELECT id,name,grade from student where grade = 1;

这个 SQL,grade 是加了索引的

但是根据 grade 索引查询的主键,再去通过聚集索引查的时候是如何查的?

1、查询出所有的主键值,再一次性查出 2、一个主键就去查一次,如果是这种那就需要查询很多次

2716 次点击
所在节点    程序员
28 条回复
chibupang
2019-09-20 01:35:47 +08:00
索引都没有命中吧?最左匹配原则了解一下
Soar360
2019-09-20 01:53:33 +08:00
覆盖索引?
GTim
2019-09-20 09:07:31 +08:00
因为,使不使用索引是看天吃饭的.....

```
If you select only a few rows with LIMIT, MySQL uses indexes in some cases when normally it would prefer to do a full table scan
```
mineqiqi
2019-09-20 09:30:55 +08:00
7000w 单表数据还不分表。。。再怎么优化也不会很快
noahsophie
2019-09-20 11:46:33 +08:00
学习了~
optional
2019-09-20 12:23:56 +08:00
把分页从 offset 分页改成主键分页,可以从 100ms->10ms
dackh
2019-09-20 14:05:54 +08:00
@optional 可以具体说说吗
jojojo
2019-09-22 17:28:50 +08:00
延迟关联

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

https://www.v2ex.com/t/602261

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

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

© 2021 V2EX