使用 SQL Server 2012 Express。我有一个代表键/值对的表。keycol 是表的 PK。当查询参数在表中的两个 keycol 值之间时,我试图找到查询表以查找 valcol 的最佳方法。因此,如果我正在寻找 keycol=15,我想找到'a',如果 keycol=20,我想找到'b',如果 keycol=36,我想找到'c'。
;
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?我应该把另一个索引放在桌子上吗?如果速度提高,我不介意使用更多空间。这是一个查找表,因此仅每月添加行,作为重新创建完整表的刷新的一部分。
谢谢。