SQL Server 2014 Standard Edition
특정 달에 특정 도시를 오가는 항공편 수를 찾아야합니다. 예 :
select count(*)
from flights
where flightTo_AirportCode = 'aaaa'
and flightFrom_Airportcode = 'bbbb'
and flightdate < '2016-04-01'
and flightdate > '2016-02-28' ;
테이블 스키마는 다음과 같습니다.
인덱스 모델 A 또는 인덱스 모델 B (아래)가 바람직한 지 추정하려고합니다 (인덱스를 빌드하는 데 많은 시간이 걸리고 디스크 공간은 한 번에 하나만 존재할 수 있으므로 도약하기 전에 노력하고 있습니다).
내 경험에 비추어 볼 때 어느 쪽의 색인도 가능합니다. 내가 맞아?
create index [modelA] on flights (flightTo_AirportCode, flightFrom_AirportCode, flightDate)
create index [modelB] on flights (flightDate, flightTo_AirportCode, flightFrom_AirportCode)
(또는 더 나은 방법은 이진 인덱스 또는 고급 메커니즘으로 접근 할 수 있습니까?)
CREATE TABLE [dbo].[flights](
[flightId] [uniqueidentifier] NOT NULL,
[accountId] [uniqueidentifier] NULL,
[flightDate] [datetime] NULL,
[flightTo_AirportCode] [nvarchar](30) NULL,
[flightFrom_AirportCode] [nvarchar](30) NULL,
-- ... 45 more fields
CONSTRAINT [PK_flight] PRIMARY KEY CLUSTERED
(
[flightId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 70) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]