複数の範囲を持つマッピング テーブルを使用する場合、パフォーマンスに問題があります。マッピング テーブルは次のようにレイアウトされます。
ResultNumber param1Min param1Max param2Min param2Max ... param8min param8max
これらは、マッピング テーブルの列名です。テーブルの上に結合されているのは ですparam1, param2, param3 ... param8
。
(param1 は param1Min と param1Max の間) と (param2 は param2Min と param2Max の間) の行を見つけて、一致する行から結果番号を取得する必要があります。問題は、マッピング テーブルに 200 万行を超える行があり、必要なものを見つけるために範囲を使用する必要があるため、このテーブルのインデックス作成に問題があることです。
これをスピードアップする方法について何か考えはありますか?
私が試したインデックスも含めましたが、まったく役に立ちませんでした
SELECT ResultNumber
FROM MappingTable
WHERE ( param1 BETWEEN param1Min AND param1Max )
AND ( param2 BETWEEN param2Min AND param2Max )
AND ( param3 BETWEEN param3Min AND param3Max )
...
CREATE CLUSTERED INDEX [index] ON [dbo].MappingTable
(
[param1Min] ASC,
[param1Max] ASC,
[param2Min] ASC,
[param2Max] ASC,
[param3Min] ASC,
[param3Max] ASC,
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)