我对SELECT * FROM MyTable WHERE DataDate = '18-AUG-2013'
包含 340 列和 3.4M 行的表进行了简单查询。
在 SSMS (Ctrl-L) 中运行估计的执行计划建议我在 DataDate 上创建一个非聚集索引并包括所有其他列?
这是明智的做法(一般而言)吗?在我看来,这会大大增加索引空间和插入索引的时间等?
我对SELECT * FROM MyTable WHERE DataDate = '18-AUG-2013'
包含 340 列和 3.4M 行的表进行了简单查询。
在 SSMS (Ctrl-L) 中运行估计的执行计划建议我在 DataDate 上创建一个非聚集索引并包括所有其他列?
这是明智的做法(一般而言)吗?在我看来,这会大大增加索引空间和插入索引的时间等?
绝对不要那样做。缺失的索引提示可能非常有用,但建议可能很愚蠢,有时甚至完全荒谬。为了这个查询的好处创建整个表的副本适合后者。
如果您最常见的查询使用谓词,
DataDate
那么将您的表聚集索引更改为此可能是合适的。只有您可以根据您对工作量的理解进行调用。SELECT *
在 340 列表上闻起来很可疑。您真的每次都需要所有这些列吗?