MySQL で条件によってクエリを並べ替える場合、ファイルソートを回避するにはどうすればよいですか?
ORDER BY (videos_count > 0) DESC, name
has_videos
カウントだけでなくブール列もキャッシュした方がよいでしょうか?
MySQL で条件によってクエリを並べ替える場合、ファイルソートを回避するにはどうすればよいですか?
ORDER BY (videos_count > 0) DESC, name
has_videos
カウントだけでなくブール列もキャッシュした方がよいでしょうか?
クエリを 2 つに分割するのはどうでしょうか。最初に少なくとも 1 つのビデオを含むもの、次に (必要な場合のみ) 残りの部分です。
select * from video_table
where video_count > 0
order by name
そして、それらを超える必要がある場合:
select * from video_table
where video_count = 0
order by name
一般的な意味では、ファイルソートを回避するには、通常はインデックスをヒットする必要があります。また、インデックスをヒットするには、通常、列の値のみをソートする必要があります (インデックスは通常、列に対して作成されるため)。