やりたいこと
お世話になります。
今実装されているSQLが非常に遅いので、適切なINDEXを貼ることで高速化を図ろうとしています。
コストの高い部分は以下SQLのRANKを生成しているソート部です。
以下のようなSQL文があったとき、
- WHERE句及びORDER句でそれぞれにINDEXを参照するようにヒントをつける
- 1つのINDEXで両方に効くようなINDEXを作成する
のどちらかを実装することで性能改善を目指しているですが、うまくいきません
どなたかお力を貸しては頂けないでしょうか?
※DBに関してほぼ素人なので質問の仕方に問題があればご指摘願います。
実装状況
SQL
1SELECT 2 COLUMN_A 3 ,ROW_NUMBER() OVER(PARTITION BY COLUMN_A ORDER BY COLUMN_B DESC) RANK 4FROM 5 TABLE_A 6WHERE 7 COLUMN_A = 0 8 AND COLUMN_D = 'A' 9 AND COLUMN_E = FALSE 10
なお、現在適用しているINDEXは以下です
- COLUMN_A 昇順
- COLUMN_D 昇順
- COLUMN_E 昇順
このINDEXに対し、
- COLUMN_B 降順
を追加しても実行速度に変化はありませんでした。
環境情報
DB製品名:Microsoft SQL Server Enterprise Evaluation (64-bit)
OS:Microsoft Windows NT 6.3 (14393)