SQLServer環境下でのクエリの高速化

SQLとは長い付き合いで、他のメンバーが言うほど組む事は嫌いではないのだが、いまいちチューニングに関しては頓着してこなかった。

チューニング素人が今回学んだのは、FORCEPLANなる句。
汚いDB下で要塞のようなSQLを組んだのだが、DBの件数が増加すると、著しくパフォーマンスが落ちた。
多数のJOINと副問い合わせが原因なのだが、結合の順序に気を遣っても、性能改善はされなかった。これは、SQLServerが実行時に最適な結合を模索するためだが、こちらの思惑通りの結合順序で処理してくれるとは限らない。そこを強制的に"書いてある通り順番に"処理を行わせるのが上記の宣言。

SET FORCEPLAN ON

SELECT …

と続ければ、OK。
宣言で"OFF"にすると、SQLServerにお任せとなる。チューニングについて、色々習得すれば、もっとSQLが楽しくなるかもしれない。