SQL Server 2014 Standard Edition
Preciso encontrar o número de voos de e para cidades específicas por determinados meses. Por exemplo
select count(*)
from flights
where flightTo_AirportCode = 'aaaa'
and flightFrom_Airportcode = 'bbbb'
and flightdate < '2016-04-01'
and flightdate > '2016-02-28' ;
O esquema da tabela está abaixo.
Estou tentando estimar se o modelo de índice A ou o modelo de índice B (abaixo) é preferível (leva muitas horas para criar o índice e o espaço em disco permite que apenas exista um de cada vez, por isso estou tentando olhar antes de pular).
Da minha experiência, qualquer um dos índices serve. Estou certo?
create index [modelA] on flights (flightTo_AirportCode, flightFrom_AirportCode, flightDate)
create index [modelB] on flights (flightDate, flightTo_AirportCode, flightFrom_AirportCode)
(Ou, melhor, existe um índice binário ou mecanismo avançado que eu possa usar para abordar isso?)
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]
fonte