SQL Server 2016にバージョンアップ後、あるクエリで稀にタイムアウトが発生するケースがありました。
そのクエリは、数千万件あるテーブル、サブクエリで集計しランク付けした結果、その他、複数のテーブルを結合し
さらにパラメータも動的に変わるものです。
データの分布も一定ではないため、OPTIMIZE FOR UNKNOWN句を付けていました。
プランの強制などもやってみましたが効果がなく、こちらのオプションを設定してみたところ収まりました。
OPTION(OPTIMIZE FOR UNKNOWN, USE HINT (‘FORCE_LEGACY_CARDINALITY_ESTIMATION’))