首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化给定的mySql查询

优化给定的mySql查询
EN

Stack Overflow用户
提问于 2013-03-12 12:58:00
回答 1查看 44关注 0票数 1

我一直在检查我的慢查询,并尽我所能对每个查询进行属性优化。我遇到了这个,这是我一直坚持的。

代码语言:javascript
复制
EXPLAIN SELECT pID FROM ds_products WHERE pLevel >0

id  select_type   table        type  possible_keys  key     key_len   ref   rows    Extra
1   SIMPLE        ds_products  ALL   pLevel         NULL    NULL      NULL  45939   Using where

我已经为pLevel [tinyint(1)]建立了索引,但是查询没有使用它,并且没有执行全表扫描。

下面是该表中每个pLevel值的行数:

代码语言:javascript
复制
pLevel   count
0        34040
1        3078
2        7143
3        865
4        478
5        279
6        56

如果我查询pLevel的特定值,它会使用索引:

代码语言:javascript
复制
EXPLAIN SELECT pID FROM ds_products WHERE pLevel =6

id  select_type  table        type   possible_keys    key              key_len  ref     rows    Extra
1   SIMPLE       ds_products  ref    pLevel  pLevel  1      const   1265

我试过pLevel>=1和pLevel<=6..。但它仍然会进行全面扫描

我已经尝试过(pLevel=1、pLevel=2、pLevel=3、pLevel=4、pLevel=5或pLevel=6) ....但它仍然会执行全表扫描。

EN

回答 1

Stack Overflow用户

发布于 2013-03-12 14:13:09

尝试使用MySQL GROUP BY

代码语言:javascript
复制
SELECT pLevel, COUNT(*)
FROM ds_products
GROUP BY pLevel

编辑:

这篇MySQL文档文章可能会对您有所帮助。How to Avoid Table Scans

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

https://stackoverflow.com/questions/15353629

复制
相关文章

相似问题

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