Phiên bản tiêu chuẩn SQL Server 2014
Tôi cần tìm số chuyến bay đến và đi từ các thành phố cụ thể trong một số tháng nhất định. Ví dụ
select count(*)
from flights
where flightTo_AirportCode = 'aaaa'
and flightFrom_Airportcode = 'bbbb'
and flightdate < '2016-04-01'
and flightdate > '2016-02-28' ;
Lược đồ bảng dưới đây.
Tôi đang cố gắng ước tính nếu mô hình chỉ mụcA hoặc mô hình chỉ mụcB (bên dưới) là thích hợp hơn (phải mất nhiều giờ để xây dựng chỉ mục và không gian đĩa chỉ cho phép một lần tồn tại, vì vậy tôi đang cố gắng tìm kiếm trước khi nhảy).
Từ kinh nghiệm của tôi, một trong hai chỉ số sẽ làm. Tôi có đúng không
create index [modelA] on flights (flightTo_AirportCode, flightFrom_AirportCode, flightDate)
create index [modelB] on flights (flightDate, flightTo_AirportCode, flightFrom_AirportCode)
(Hoặc, tốt hơn, có một chỉ số nhị phân hoặc cơ chế nâng cao mà tôi có thể sử dụng để tiếp cận điều này không?)
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]