SQL सर्वर 2014 मानक संस्करण
मुझे कुछ महीनों के लिए विशिष्ट शहरों से आने और जाने वाली उड़ानों की संख्या का पता लगाने की आवश्यकता है। उदाहरण के लिए
select count(*)
from flights
where flightTo_AirportCode = 'aaaa'
and flightFrom_Airportcode = 'bbbb'
and flightdate < '2016-04-01'
and flightdate > '2016-02-28' ;
तालिका स्कीमा नीचे है।
मैं अनुमान लगाने की कोशिश कर रहा हूं कि क्या इंडेक्स मॉडलए या इंडेक्स मॉडलबी (नीचे) बेहतर है (इंडेक्स को बनाने में कई घंटे लगते हैं, और डिस्क स्पेस एक समय में केवल एक ही मौजूद है, इसलिए मैं लीप से पहले देखने की कोशिश कर रहा हूं)।
मेरे अनुभव से, या तो सूचकांक करेगा। क्या मैं सही हू?
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]