0

我有一个 SQLite 表

CREATE TABLE T(
    CategoryCode NVARCHAR(64) NOT NULL,
    DateTime     DateTime NOT NULL,
    ItemCode     NVARCHAR(64) NOT NULL,
    ItemName     NVARCHAR(64) NOT NULL,
    ItemValue    NUMERIC(28, 4) NOT NULL
)

问题是如何优化以下查询的索引:

SELECT
 CategoryCode
,ItemCode
,ItemName
,SUM(ItemValue) as TotalValue
FROM T
WHERE CategoryCode = 'Code1' 
AND DateTime < '2012-01-04 00:00:00'
GROUP BY ItemCode

谢谢!

4

1 回答 1

2

对于确切的查询,您需要在T(CategoryCode, DateTime)or上建立索引T(DateTime, CategoryCode),具体取决于哪一列比另一列更具选择性。

但是,如果没有更全面地了解对表的所有访问,为单个查询创建索引是不明智的。

例如,您可能会发现,如果表中的大多数数据都有,CategoryCode = 'Code1'那么索引应该只在DateTime列上创建。

于 2012-09-12T15:58:59.410 回答