为此查询构建最佳索引

时间:2016-02-08 07:36:22

标签: sql sql-server indexing

我有这个查询。查询花费太多时间来返回结果。 我做了几乎任何可能的WHERE,FUNCS()组合作为索引。 此表中的索引或类似表的空间是数据的10倍。 如果数据是1GB,那么indexex是10GB。

我相信通过适当的索引,我可以立即返回结果。 当相同的字段重复时,就像money7一样,这意味着它在搜索中的次数相同。

寻找你的帮助&建议。

SELECT TOP 100 
    tinyint3, money1, money2, money3, money4,
    COUNT(date1), 
    (SUM(money7) - (SUM(smallint1) * moneyConstVal)) / COUNT(date1),
    SUM(smallint1), (SUM(money7) - (SUM(smallint1) * moneyConstVal)) / SUM(smallint1),
    SUM(money7) - (SUM(smallint1) * moneyConstVal)  colResultName
FROM
    SSum1 WITH(NOLOCK)
WHERE 
    Day <= '2008-10-31' AND ProfitProtect <= 100
GROUP BY 
    tinyint3, money1, money2, money3, money4
ORDER BY 
    colResultName DESC, money1, money2 DESC, money3 DESC, money4

1 个答案:

答案 0 :(得分:0)

为你的情况尝试这个索引:

CREATE NONCLUSTERED INDEX IX_SSum1_SEARCH 
ON SSum1  (Day,ProfitProtect)

通常索引是使用中包含的列

创建的