gpt4 book ai didi

mysql - 为什么当我查询更多列时,MYSQL 不使用同一查询的索引?

转载 作者:行者123 更新时间:2023-11-29 09:11:48 24 4
gpt4 key购买 nike

我有下表:

create table stuff (
id mediumint unsigned not null auto_increment primary key,
title varchar(150) not null,
link varchar(250) not null,
time timestamp default current_timestamp not null,
content varchar(1500)
);

如果我解释查询

select id from stuff order by id;

然后它说它使用主键作为索引来对结果进行排序。但通过这个查询:

select id,title from stuff order by id;

EXPLAIN 说没有可能的键,它求助于文件排序。

这是为什么呢?数据库中不是把某一行的数据存储在一起吗?如果当我只查询 id 时它可以使用索引对结果进行排序,那么为什么向查询添加其他列会产生影响呢?主键已经标识了行,所以我认为在第二种情况下也应该使用主键进行排序。

你能解释一下为什么情况并非如此吗?

最佳答案

当然,因为它在此查询中性能更高:您需要读取完整索引,然后从数据中逐行迭代读取。这是极其低效的。相反,mysql 更喜欢直接从数据文件中读取数据。

另外,你使用什么样的存储引擎?看起来像 mysam。

对于这种情况,innodb 会更高效,因为它使用主键上的聚集索引(在您的情况下单调增长)。

关于mysql - 为什么当我查询更多列时,MYSQL 不使用同一查询的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5387455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com