Sql Server Compact(SqlCe 4.0)GROUP BY查询优化

时间:2014-09-10 05:41:54

标签: c# sql .net sql-server-ce

我有一张表Invoices

Invoices

的结构
CREATE TABLE Invoices (
  Id               int NOT NULL IDENTITY (1, 1),
  Depot            nvarchar(100) NOT NULL,
  InvoiceNo        nvarchar(100) NOT NULL,
  InvoiceDate      datetime NOT NULL,
  Licencee         nvarchar(255) NOT NULL,
  Outlet           nvarchar(1024) NOT NULL,
  SerialNo         int NOT NULL,
  ProductName      nvarchar(500) NOT NULL,
  Size             int NOT NULL,
  [Case]           int NOT NULL,
  BeverageSegment  nvarchar(100),
  /* Keys */
  PRIMARY KEY (Id)
)
GO

CREATE INDEX Invoices_BeverageSegment
  ON Invoices
  (BeverageSegment)
GO

CREATE INDEX Invoices_InvoiceId
  ON Invoices
  (InvoiceNo)
GO

我必须查询特定Depot的总销售额,Product上的Date,表格中约1,35,850,查询占47分钟。

我在数据库系统方面没有太多的专业知识,我已经检查了SqlCe的查询优化,但在这种情况下它们都没有帮助。

我的查询:

SELECT 
  Depot, 
  InvoiceDate, 
  ProductName, 
  Size, 
  SUM([Case]) as Cases 
FROM Invoices 
GROUP BY 
  Depot, 
  InvoiceDate, 
  ProductName, 
  Size

1 个答案:

答案 0 :(得分:1)

在所有四列Depot,InvoiceDate,ProductName,Size上创建非聚集索引将提高性能。

   Create NonClustered Index Index_Name
   on 
   Invoices ( Depot, InvoiceDate,  ProductName, Size)