此句sql,如何添加索引

发布于 2022-09-12 13:26:33 字数 638 浏览 12 评论 0

主表中的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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

中性美 2022-09-19 13:26:33

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

‘画卷フ 2022-09-19 13:26:33

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

很酷不放纵 2022-09-19 13:26:33

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文