首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用InnoDB引擎减少查询时间

如何利用InnoDB引擎减少查询时间
EN

Stack Overflow用户
提问于 2015-05-13 13:08:44
回答 2查看 24关注 0票数 0

我正在尝试优化这个查询。现在需要28秒。

AS曾经在我的查询中丢失。添加后,查询时间减少20%。

代码语言:javascript
复制
SELECT
    g.id,
    g.adresid,
    g.senaryoid,
    g.olayid,
    g.gonderilecegitarih
FROM
    (
        SELECT
            adresid
        FROM
            expose2.800_emsenaryolar_emgidenbulten
        WHERE
            olayid = '3320'
    ) AS s
RIGHT JOIN expose2.800_emsenaryolar_emgidenbulten AS g ON s.adresid = g.adresid
WHERE
    s.adresid IS NULL
AND g.olayid = '2784'
AND g.durum = '1'
AND g.gonderilecegitarih < DATE_SUB(
    '2015-05-13 15:40:15',
    INTERVAL 1 DAY
)
EN

回答 2

Stack Overflow用户

发布于 2015-05-13 13:24:19

如果在子查询中使用s.adresid IS NULL条件,那么它将以更快的速度加入更多的行.

代码语言:javascript
复制
SELECT
    g.id,
    g.adresid,
    g.senaryoid,
    g.olayid,
    g.gonderilecegitarih
FROM (
        SELECT adresid FROM expose2.800_emsenaryolar_emgidenbulten WHERE olayid = '3320' and  s.adresid IS NULL
    ) AS s
RIGHT JOIN expose2.800_emsenaryolar_emgidenbulten AS g ON s.adresid = g.adresid

AND g.olayid = '2784'
AND g.durum = '1'
AND g.gonderilecegitarih < DATE_SUB(
    '2015-05-13 15:40:15',
    INTERVAL 1 DAY
)

不过,这个查询仍然使用self进行优化。

票数 0
EN

Stack Overflow用户

发布于 2015-05-13 19:20:04

若要增加速度,请将此复合索引添加到g

代码语言:javascript
复制
INDEX(olayid, durum, gonderilecegitarih)

请提供SHOW CREATE TABLE 800_emsenaryolar_emgidenbulten;我想验证您在adresid上也有一个索引。

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

https://stackoverflow.com/questions/30215810

复制
相关文章

相似问题

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