0

MySQL で条件によってクエリを並べ替える場合、ファイルソートを回避するにはどうすればよいですか?

ORDER BY (videos_count > 0) DESC, name

has_videosカウントだけでなくブール列もキャッシュした方がよいでしょうか?

4

2 に答える 2

1

クエリを 2 つに分割するのはどうでしょうか。最初に少なくとも 1 つのビデオを含むもの、次に (必要な場合のみ) 残りの部分です。

select *  from video_table  
where video_count > 0
order by name

そして、それらを超える必要がある場合:

select *  from video_table  
where video_count = 0
order by name
于 2012-04-10T02:24:41.427 に答える
0

一般的な意味では、ファイルソートを回避するには、通常はインデックスをヒットする必要があります。また、インデックスをヒットするには、通常、列の値のみをソートする必要があります (インデックスは通常、列に対して作成されるため)。

于 2012-04-10T02:00:36.337 に答える