技術関連の覚書

案件でやったり自宅で試したことの覚書

SQL最適化(3)

これ書いてなかったなというので追加

SORT CANCEL

例えばORDER BYで項目をソートする場合に、インデックスを使用するとインデックスの検索によってソートがかかるので、ORDER BYでのソートを取りやめて効率化します。

これがどういうときに有効利用できるかというと、LIMIT句で取得件数を制限する場合、ソートがかかっていれば必要な件数取得した時点で検索を終了します(LIMIT SCAN)。

SORT CANCELが働く場合と言うのは * SORT CANCEL BY INDEX 上で書いたとおりです

  • SORT CANCEL BY JOIN ORDER BYで指定している項目が結合条件に使用されている場合にORDER BYのソートをキャンセルします

  • SORT CANCEL BY DISTINCT ORDER BYで指定している項目がDISTINCT処理でソートされる場合にORDER BYのソートをキャンセルします

  • SORT CANCEL BY GROUPING ORDER BYに含まれる列がすべてグループ化処理によってソートされる場合にORDER BYのソート処理をキャンセルします

つまり、何かの処理でGROUP BYでソートしようとしていた項目に対するソートが働けば改めてソートをしないということです