gpt4 book ai didi

当范围太大时MySQL不使用索引

转载 作者:行者123 更新时间:2023-11-30 00:13:49 25 4
gpt4 key购买 nike

我正在处理 2 个查询:

EXPLAIN SELECT ecpm AS cpm, date_added, cpid, sales
FROM table1
WHERE date_added >=20130501000000
AND date_added <20140531235959

还有

EXPLAIN SELECT ecpm AS cpm, date_added, cpid, sales
FROM table1
WHERE date_added >=20140501000000
AND date_added <20140531235959

第一个查询处理 1079470 行,第二个查询处理 14942 行。

我的问题:第一个查询不使用索引:

1   SIMPLE  table1  ALL PRIMARY,date_added  NULL    NULL    NULL    1079470 Using where

而第二个是:

1   SIMPLE  table1  range   PRIMARY,date_added  date_added  8   NULL    14942   Using where

无论我的范围是否很大,我应该使用什么参数才能使用 INDEX?

谢谢

最佳答案

MySQL 可能已确定避免对较大范围建立索引会更有效,因为无论如何它最终都会扫描整个表(基于优化器修剪设置)。

我建议阅读 MySQL 查询优化:Controlling the Query Optimizer 。更具体地看一下 optimizer prune levels .

以下是有关 EXPLAIN 查询的更多信息:Optimizing queries with EXPLAIN

关于当范围太大时MySQL不使用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23825040/

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