亚洲国产第一_开心网五月色综合亚洲_日本一级特黄特色大片免费观看_久久久久久久久久免观看

Hello! 歡迎來到小浪云!


如何用單條 SQL 語句合并大量類似的重復查詢?


avatar
小浪云 2024-11-11 226

如何用單條 SQL 語句合并大量類似的重復查詢?

通過單條 sql 語句實現大量重復查詢

數據庫中,當需要重復執行大量幾乎相同的查詢時,使用單獨的查詢語句會造成效率低下。本文將介紹如何使用單條 sql 語句合并多個類似的查詢。

問題:根據給定示例,共有 24 條類似的 sql 語句,每條語句都針對不同的 mark 值執行相同的查詢,從 t_search 表中按 title 分組并按計數降序排序。

解決方案:

方法 1(適用于 mysql 8.0 及更高版本):

with ranked_data as (     select *,            count(*) over (partition by title, mark) as count,            row_number() over (partition by mark order by count(*) desc) as row_num     from t_search     where mark between 'a' and 'z'     group by title, mark ) select * from ranked_data where row_num <= 20 order by mark, count desc;
登錄后復制

方法 2(適用于較低版本的 mysql):

SELECT *  FROM (     SELECT *,            @rank := IF(@prev_mark = mark, @rank + 1, 1) AS rank,            @prev_mark := mark,            COUNT(*) AS count     FROM t_search     JOIN (SELECT @rank := 0, @prev_mark := '') AS vars     WHERE mark BETWEEN 'a' AND 'z'     GROUP BY title, mark     ORDER BY mark, count DESC ) AS ranked_data WHERE rank <= 20 ORDER BY mark, count DESC;
登錄后復制

通過使用這些方法,您可以使用更簡潔、更高效的單條 sql 語句合并這些重復的查詢,從而提高數據庫查詢性能。

相關閱讀