首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当范围太大时,MySQL不使用索引

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

Stack Overflow用户
提问于 2014-05-23 17:02:35
回答 1查看 234关注 0票数 1

我正在处理两个查询:

代码语言:javascript
复制
EXPLAIN SELECT ecpm AS cpm, date_added, cpid, sales
FROM table1
WHERE date_added >=20130501000000
AND date_added <20140531235959

和

代码语言:javascript
复制
EXPLAIN SELECT ecpm AS cpm, date_added, cpid, sales
FROM table1
WHERE date_added >=20140501000000 
AND date_added <20140531235959

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

我的问题是:第一个查询没有使用索引:

代码语言:javascript
复制
1   SIMPLE  table1  ALL PRIMARY,date_added  NULL    NULL    NULL    1079470 Using where

而第二个则是:

代码语言:javascript
复制
1   SIMPLE  table1  range   PRIMARY,date_added  date_added  8   NULL    14942   Using where

无论我的范围是大还是不大,我应该使用什么参数才能使用索引?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2014-05-23 17:06:54

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

我建议阅读有关MySQL查询优化的内容:Controlling the Query Optimizer。更具体地说,看看optimizer prune levels。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23825040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档