SQL Server 2012 Express 사용. 키/값 쌍을 나타내는 테이블이 있습니다. keycol은 테이블의 PK입니다. 쿼리 매개 변수가 테이블의 두 keycol 값 사이에있는 경우 valcol을 찾기 위해 테이블을 쿼리하는 최적의 방법을 찾으려고합니다. 그래서 keycol = 15를 찾고 'keycol = 20'이면 'b'를 찾고 keycol = 36 인 경우 'c'를 찾으려면 'a'를 찾고 싶습니다.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