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' ;
ตารางสคีมาอยู่ด้านล่าง
ฉันพยายามที่จะประเมินว่าดัชนี modelA หรือ index modelB (ด้านล่าง) เป็นที่นิยมหรือไม่ (ใช้เวลาหลายชั่วโมงในการสร้างดัชนีและพื้นที่ดิสก์อนุญาตให้มีอยู่ครั้งละหนึ่งรายการเท่านั้นดังนั้นฉันจึงพยายามมองก่อนที่จะกระโดด)
จากประสบการณ์ของฉันทั้งดัชนีจะทำ ฉันถูกไหม?
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]