此句sql,如何添加索引
主表中的where条件加了组合索引,但还是出现了:using temporary, using filesort
请教各位大神,如何优化
谢谢!
EXPLAIN SELECT DISTINCT
(store_id),
c.id,
title,
count,
CODE,
time,
type
FROM
product AS p
LEFT JOIN store AS s ON (p.store_id = s.id)
WHERE
s. STATUS = 'active'
AND (
s.image != ''
OR s.image IS NOT NULL
)
AND p.is_active = 'yes'
AND is_available = '1'
AND title <> ''
AND type = 'code'
AND (
time != '0000-00-00 00:00:00'
OR time > now()
)
AND store_id NOT IN (
1,
2,
)
ORDER BY
id DESC
LIMIT 1000
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
把你现在已经建立的复合索引贴出来看看,因为你用到了排序,应该要把你排序字段也加入到这个符合索引里面
你把 OR 条件语句去了,是什么样子的?
加了组合索引不代表sql 就一定会执行,可以看看explain里 实际的key是否使用了你建的索引。 如果没有使用可以使用force index() 强制走索引试试