データベース最適化SQL最適化のSELECT最適化——order by最適化

2626 ワード

sqlを使用してデータベースのデータをクエリーする場合、ソートへの操作が頻繁に使用されます.したがって、ソートの
データ、インデックスを使うことができなくて、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;