У меня есть таблица Invoices
Sql Server Compact (SQLCE 4.0) Оптимизация GROUP BY Запрос
Структура 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
Вы пробовали указатель на Depot, InvoiceDate? – ErikEJ
@ErikEJ - комбинированный индекс на Depot и InvoiceDate? –
Да, это то, что я имею в виду – ErikEJ