我正在尋找一些建議如何獲得索引對這個查詢運行的更好... 的SQL Server 2005/8一些客戶有5某些8 ...的SQL Server索引建議性能
SELECT sales.ChainStoreId,
sales.CashBoxId,
dbo.DateOnly2(sales.BonDate),
MAX(sales.BonDate),
SUM(sales.SumPrice)
FROM [BACK_CDM_CLEAN_BOLTEN].[dbo].[CashBoxSales] sales
WHERE sales.BonType in ('B','P','W')
AND Del = 0
AND sales.BonDate >= @minDate
GROUP BY sales.ChainStoreId,
sales.CashBoxId,
dbo.DateOnly2(sales.BonDate)
表如下所示
CREATE TABLE [dbo].[CashBoxSales](
[SalesRowId] [int] IDENTITY(1,1) NOT NULL,
[ChainStoreId] [int] NOT NULL,
[CashBoxId] [int] NOT NULL,
[BonType] [char](1) NOT NULL,
[BonDate] [datetime] NOT NULL,
[BonNr] [nvarchar](20) NULL,
[SumPrice] [money] NOT NULL,
[Discount] [money] NOT NULL,
[EmployeeId] [int] NULL,
[DayOfValidity] [datetime] NOT NULL,
[ProcStatus] [int] NOT NULL,
[Del] [int] NOT NULL,
[InsertedDate] [datetime] NOT NULL,
[LastUpdate] [datetime] NOT NULL,
什麼是索引列的正確排序,覆蓋或複合材料等 表有多達10萬行。還有其他類似的選擇,但我希望從建議得到這個速度(最重要的),我可以調整一些其他人。
非常感謝!
我應該補充說Del列只有值0,1,而bontype有大約5個值。 Dateonly2函數返回給定日期時間的日期,我應該確定列索引(?)。我也知道關於分析器,分析器和DTA等。寧願有原則性的答案,基於邏輯比工具...乾杯 – alex 2010-01-16 14:13:56
好吧,我有事情下降到不到2秒使用顧問和索引 CREATE NONCLUSTERED INDEX [ Alex_index_] ON [dbo]。[CashBoxSales] ( \t [BonType] ASC, \t [刪除] ASC, \t [BonDate] ASC, \t [ChainStoreId] ASC, \t [CashBoxId] ASC ) INCLUDE([SumPrice]) 現在誰可以向我解釋爲什麼這個事情是按照這個順序排序的,爲什麼del 2值Bontype 3值的索引有幫助...我理解bondate,並且理解include中的sumprice,不需要額外的查找,所有列需要在那裏,但..... – alex 2010-01-16 18:00:57