データベース最適化SQL最適化のSELECT最適化——order by最適化
2626 ワード
sqlを使用してデータベースのデータをクエリーする場合、ソートへの操作が頻繁に使用されます.したがって、ソートの
データ、インデックスを使うことができなくて、1つのとても良い時間の事で、データベースの解決方法は2つあります:1、選択
すべてのローが完了すると、データが少なく、メモリでソートされます.2、データが大きいので、ハードディスクファイルで並べ替えると、時間がかかります.
特に性能に影響する.
インデックスをうまく運用できれば、ソートを使用するとインデックスのみに基づいてソートされるため、ソートの消費は少なくなります.
順番に読み取り、クライアントに送信します.
1.ソートを使用する場合、複合インデックスが追加のソートを必要としない場合
a、複合インデックスの場合、一番前の列がソートフィールドにある
データ、インデックスを使うことができなくて、1つのとても良い時間の事で、データベースの解決方法は2つあります:1、選択
すべてのローが完了すると、データが少なく、メモリでソートされます.2、データが大きいので、ハードディスクファイルで並べ替えると、時間がかかります.
特に性能に影響する.
インデックスをうまく運用できれば、ソートを使用するとインデックスのみに基づいてソートされるため、ソートの消費は少なくなります.
順番に読み取り、クライアントに送信します.
1.ソートを使用する場合、複合インデックスが追加のソートを必要としない場合
a、複合インデックスの場合、一番前の列がソートフィールドにある
SELECT * FROM t1
ORDER BY key_part1,key_part2,...
b、 , where
SELECT * FROM t1
WHERE key_part1 = constant
ORDER BY key_part2;
c、
SELECT * FROM t1
WHERE key_part1 > constant
ORDER BY key_part1 ASC;
: , , ,
2、 , ,
a、
SELECT * FROM t1 ORDER BY key1, key2;
b、 ,
SELECT * FROM t1 WHERE key2=constant ORDER BY key_part2;
c、 ,
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
d、
SELECT * FROM t1 WHERE key2=constant ORDER BY key1;
e、 , ,
SELECT * FROM t1 ORDER BY ABS(key);
SELECT * FROM t1 ORDER BY -key;
f、 jion ,order by
,( EXPLAIN
type const ), ,
g、 group by order by , , group by
。
, , group by , ,
order by null
h、 , ,
filesort, char(20), 10
, ,
i、 hash
j、 , ,
, :
SELECT ABS(a) AS a FROM t1 ORDER BY a;
:order by select ,
,
, :
SELECT ABS(a) AS b FROM t1 ORDER BY a;