【问题标题】:Build Best index for this Query [closed]为此查询建立最佳索引[关闭]
【发布时间】:2016-05-17 19:26:30
【问题描述】:

我有这个问题。查询需要太多时间才能返回结果。 我做了几乎所有可能的 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

【问题讨论】:

  • 你看执行计划了吗?

标签: sql sql-server indexing


【解决方案1】:

你的情况试试这个索引:

CREATE NONCLUSTERED INDEX IX_SSum1_SEARCH 
ON SSum1  (Day,ProfitProtect)

通常索引是使用 where

中包含的列创建的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    相关资源
    最近更新 更多