我有一个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
谢谢!
答案 0 :(得分:2)
对于确切的查询,您需要T(CategoryCode, DateTime)
或T(DateTime, CategoryCode)
上的索引,具体取决于哪个列比另一列更具选择性。
但是,为单个查询创建索引是不明智的,而对表的所有访问都没有更全面的视图。
e.g。例如,您可能会发现,如果表中的大多数数据都有CategoryCode = 'Code1'
,则只应在DateTime
列上创建索引。