0
SQL Server 2012 Expressの使用。 私はキーと値のペアを表すテーブルを持っています。 keycolはテーブルのPKです。 クエリパラメータがテーブルの2つのkeycol値の間にある場合、valcolを見つけるためにテーブルをクエリする最適な方法を見つけようとしています。 私はkeycol = 15を探していれば 'a'を探し、keycol = 20なら 'b'、keycol = 36なら 'c'を探します。PK値間のSQL Serverクエリ最適?
;
with tblextr (keycol , valcol)
As
(
Select 10 , 'a'
Union All
Select 19 , 'a'
Union All
Select 20 , 'b'
Union All
Select 29 , 'b'
Union All
Select 30 , 'c'
Union All
Select 39 , 'c'
)
select valcol from tblextr
where keycol = (
select max(keycol)
from tblextr
where keycol <= 36
)
keycolはすでにPKであるため、SQLを書くよりも優れていますか?テーブルに置くべき別のインデックスはありますか?速度が上がると、私はもっと多くのスペースを使っても構いません。これはルックアップ・テーブルなので、リフレッシュの一部として行が毎月追加され、テーブル全体が再作成されます。
ありがとうございました。
「36」の代わりに「6」があった場合、どうしたらいいでしょうか?またはあなたが '136'を持っていたら? –
どちらの場合も結果はnullになりますが、これは問題ありません。 – Snowy