gpt4 book ai didi

mysql - select * from 不使用任何键

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

我在Windows 2008服务器上使用MySQL 5.1版本。当我执行以下查询时:

SELECT * FROM tablename;

It is taking too much time for fetching all the results in that table. This query is listed in the slow query log too while this table has primary key as well as few more index. I execute below query to check the execution plan:

explain extended select * from tablename;

I found below information:

id=1
select_type=SIMPLE
table=tablename
possible_keys=null
key=null
key_len=null
ref=null
rows=85151
Extra=blank

我认为默认情况下它的查询应该至少使用主键。再次,我执行了下面的查询,发现过滤列的 value=100.0

explain extended select * from tablenmae;

查询不使用 key 有什么具体原因吗?

最佳答案

您正在选择表中的所有行。这就是为什么需要扫描整个表(所有行)。

仅当您缩小搜索范围(使用 where)时才使用键(或索引)。在这种情况下,使用索引来预先选择您想要的行,而无需实际扫描整个表来查找给定的条件。

如果您不需要一次访问所有行,请尝试使用 LIMIT 限制返回的行。

SELECT * FROM tablename LIMIT 100;

如果您想要接下来的 100 行,请使用

SELECT * FROM tablename LIMIT 100,100;

等等。

除了这种方法(称为“分页”)之外,您没有什么可以做的来加速此查询(除了获得更快的机器、更多的 RAM、更快的磁盘、更好的网络(如果访问 DMBS)远程)。

如果您需要进行一些处理,请考虑将逻辑(例如过滤)移至 DBMS。这可以使用查询的 WHERE 部分来实现。

关于mysql - select * from <tablename> 不使用任何键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20267561/

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