请问,这个SQL,怎么加索引才好?

yoorxee 2014-02-20 03:41:17
SELECT COUNT(COUNT) COT FROM app_service WHERE `key`='804292e42b9b7179f64e364080fb62f8' OR `key`='0e9680eed7f5ffc60a7b02167d0182a3' AND dt >='2014-02-01' AND dt <='2014-02-10'

数据结构:

FieldTypeComment
dtdate NULL
servicevarchar(20) NULL
ctvarchar(20) NULL
pkgvarchar(128) NULL
keyvarchar(128) NULL
refervarchar(128) NULL
uvint(8) unsigned NULL
countint(10) unsigned NULL
isValidtinyint(1) NULL
majorVersionvarchar(8) NULL

我EXPLAIN了一下,只能达到ALL,郁闷了;
这是索引:
Index Information

IndexesColumnsIndex_Type
NewIndex1dt, isValid
NewIndex2service
NewIndex3dt
NewIndex4dt, key

...全文
328 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
suek225 2014-02-21
  • 打赏
  • 举报
回复
可能用到的索引key, dt, (key,dt), (dt,key),还有可能不用索引更好 具体那种效果最好,与存储引擎、聚集索引和数据的选择性有关,效果自己测试哪个更好用吧
ACMAIN_CHM 2014-02-20
  • 打赏
  • 举报
回复
楼主确定语句是这样吗?还是楼上所述的那种? WHERE `key`='804292e42b9b7179f64e364080fb62f8' OR `key`='0e9680eed7f5ffc60a7b02167d0182a3' AND dt >='2014-02-01' AND dt <='2014-02-10'
知道就是你 2014-02-20
  • 打赏
  • 举报
回复
请使用 show index from app_service ; 查看表中的所有情况
知道就是你 2014-02-20
  • 打赏
  • 举报
回复
感觉你的sql语句有点问题吧 ?应该是 WHERE (`key`='804292e42b9b7179f64e364080fb62f8' OR `key`='0e9680eed7f5ffc60a7b02167d0182a3' ) AND dt >='2014-02-01' AND dt <='2014-02-10' 另外添加索引时建议手动输入索引名称,不然真的是看不懂
wutuobang321 2014-02-20
  • 打赏
  • 举报
回复
没看懂原来在哪几个字段建了索引。。。

56,682

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧