SQLで並べ替え方法別の速度比較

SQLで任意の行を優先して表示する

以前特定の文字列が含まれる行を検索してそれを一番上、その他の行は日付順に並べるという方法を紹介したが、 先に特定の文字列が含まれる行を持ってきて、別に日付順に並べたやつ(重複しないように)を合体させることでも実現できる。両者のクエリの実行スピードを比較してみる。一万件のデータを登録して試してみた。

前回紹介した方法

クエリ全体 実行時間:1775 ms.
10024 行検索しました

今回のやり方

SELECT * from データベース WHERE name = 'ABC' 
UNION ALL
(SELECT * from データベース WHERE name <>'ABC' ORDER BY 日付 DESC);

クエリ全体 実行時間:1758 ms.
10024 行検索しました 

あれ?変わらないじゃん・・・・ 日付順に並べる作業に時間かかっている感じなのでこの辺いじれば良さそうではある。