此句sql,如何添加索引

主表中的where条件加了组合索引,但还是出现了:using temporary, using filesort
请教各位大神,如何优化
谢谢!

image

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
阅读 2.3k
3 个回答

把你现在已经建立的复合索引贴出来看看,因为你用到了排序,应该要把你排序字段也加入到这个符合索引里面

你把 OR 条件语句去了,是什么样子的?

加了组合索引不代表sql 就一定会执行,可以看看explain里 实际的key是否使用了你建的索引。 如果没有使用可以使用force index() 强制走索引试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏