加速SQL查询,已奏效

梦鹰

我有这个查询

SELECT distinct(season) as seasons,
        s.name as seriename,
        c.content_digest,
        c.sub_category_id,
        c.source_url,
        c.synopsis,
        c.short_synopsis,
        c.title,
        c.duration,
        c.subtitle_url,
        c.logo_url,
        c.provider_id,
        c.event_date,
        c.start_time,
        c.live,
        c.seriesid as cSerieId,
        c.episode,
        c.season,
        c.content_id FROM content c
        INNER JOIN provider ON provider.id = c.provider_id
        LEFT OUTER JOIN serie s ON s.seriesid = c.seriesid
        WHERE live = '0' AND c.version >= provider.version
        ORDER BY seriename DESC, title
        DESC
        LIMIT 0, 18446744073709551615;

已对其进行索引并进行了一些优化,以快速交付结果(它在0.3秒内交付了44000行)。由于某种未知的原因,这使我不寒而栗,它不再是0.3秒的快速速度,而是2.5秒的快速速度。

这是上面的SQL的解释

1   SIMPLE  provider    index   PRIMARY,provider_id_idx,provider_version_idx    provider_version_idx    5       16  Using index; Using temporary; Using filesort

1   SIMPLE  c   ref c_providerid_idx,c_live_idx,c_version_idx   c_providerid_idx    5   provider.id 3179    Using where

1   SIMPLE  s   ref seriesid_idx    seriesid_idx    97  c.seriesid  1   

据我了解,它正在使用其索引,但仍然需要2.5秒。

有什么建议吗?如果需要,我会发布更多信息...

最后结果

SELECT s.name as seriename, 
            c.season as seasons,
            c.content_digest,
            c.sub_category_id,
            c.source_url,
            c.synopsis,
            c.short_synopsis,
            c.title,
            c.duration,
            c.subtitle_url,
            c.logo_url,
            c.provider_id,
            c.event_date,
            c.start_time,
            c.live,
            c.seriesid as cSerieId,
            c.episode,
            c.season,
            c.content_id FROM content c
            INNER JOIN provider ON provider.id = c.provider_id
            LEFT OUTER JOIN serie s ON s.seriesid = c.seriesid
            WHERE live = '0' AND c.version >= provider.version
            GROUP BY (CASE WHEN ( seriename IS NOT NULL )
            THEN seriename ELSE title END) 
            ORDER BY seriename DESC, title DESC
            LIMIT 0, 50
伊姆兰·扎胡尔(Imran Zahoor)

根据服务器的负载和数据集的大小,请求时间可能会有所不同。

我不确定,但是c.version >= provider.version使用join而不是in有时会有所不同WHERE请参阅下面的完整查询。让我知道EXPLAIN结果。

SELECT distinct(season) as seasons,
    s.name as seriename,
    c.content_digest,
    c.sub_category_id,
    c.source_url,
    c.synopsis,
    c.short_synopsis,
    c.title,
    c.duration,
    c.subtitle_url,
    c.logo_url,
    c.provider_id,
    c.event_date,
    c.start_time,
    c.live,
    c.seriesid as cSerieId,
    c.episode,
    c.season,
    c.content_id FROM content c
    INNER JOIN provider ON provider.id = c.provider_id 
    AND c.version >= provider.version
    LEFT OUTER JOIN serie s ON s.seriesid = c.seriesid
    WHERE live = '0' 
    ORDER BY seriename DESC, title
    DESC
    LIMIT 0, 18446744073709551615;

还要(version, live, id)content表中创建列的复合(多)索引这是创建多列索引的查询:ALTER TABLE content ADD INDEX idxc_vr_lv_id (version, live, id);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用索引加速SQL查询

来自分类Dev

加速使用存在的SQL查询

来自分类Dev

如何加速慢速 SQL 查询

来自分类Dev

SQL:如何使用索引加速查询

来自分类Dev

SQL:如何使用索引加速查询

来自分类Dev

这种“在哪里”条件会加速SQL查询吗

来自分类Dev

使用DateTime上的聚合来加速SQL查询并分组依据

来自分类Dev

如何在 WHERE 子句已编入索引的情况下加速此 MySQL 查询?

来自分类Dev

加速LINQ对象查询

来自分类Dev

递归查询加速系统

来自分类Dev

加速查询

来自分类Dev

如何加速这个查询?

来自分类Dev

加速mysql查询

来自分类Dev

多条件查询加速

来自分类Dev

已加入条件的SQL查询MAX聚合

来自分类Dev

使用已运行的Sql查询填充TextBox

来自分类Dev

glmultmatrixf硬件是否已加速?

来自分类Dev

使用SQL查询查找已删除,已添加和已存在的故障单数量

来自分类Dev

加速简单的Postgres查询

来自分类Dev

使用子查询加速JOIN

来自分类Dev

加速(不可缓存的)MySQL 查询

来自分类Dev

临时加速查询表

来自分类Dev

如何加速这个密码查询?

来自分类Dev

在SQL中,如何使用索引来加速此数据库查询?

来自分类Dev

我所有的SQL查询中始终都有一个“ WHERE date”。加速?

来自分类Dev

加速glacial sql语句?

来自分类Dev

.NET AesManaged加密硬件是否已加速?

来自分类Dev

SQL Server:在Management Studio中获取已创建表的查询

来自分类Dev

SQL查询来查找已购买最大价格的名称?