我在SQL server中有260列表。当我们运行“从表中选择计数(*)”时,需要花费几乎5-6才能得到计数。表中包含接近90至1亿条记录,其中260列中超过50 %的列包含NULL。除此之外,用户还可以从UI对表构建动态sql查询,因此搜索9,000万至1亿条记录将需要时间来返回结果。是否有方法改进SQL表的查找功能,其中筛选条件可以是任意的,any1是否可以建议我以最快的方式获得25 or数据上的聚合数据-- .Ui应该挂起或超时?
发布于 2014-08-19 00:00:47
调查水平划分。如果可以强制用户将分区键放入谓词中,这将真正有助于查询性能。
尝试垂直分区,其中将一个260列表拆分为几个列较少的表。将通常需要的所有值放在一个表中。查询只引用包含所需列的表。这将为每个页面提供更多的行,即每个查询的页面数更少。
你有很高比例的零值。稀疏柱可能会有帮助,但是计算一下你的百分比,因为如果不合适的话,它们可能会伤害你。这里有一个所以问题。
如果DB经常运行类似的查询,则筛选索引和筛选统计信息可能很有用。
发布于 2014-08-18 21:31:44
我想到的是:
SOUNDEX ),则可以创建PERSISTED COMPUTED COLUMN以避免每次计算此值。@第十二条评论很好:
“我认为您需要创建一个ETL流程,并开始将其更改为一个带有维度的事实表。”
发布于 2014-08-18 21:34:25
正如这些家伙在评论中所述,您需要分析几个查询,看看哪些索引对您最有帮助。如果查询进行了大量搜索,则可以使用MSSQL服务器的全文搜索功能。这里,您将找到一个很好的参考资料,并有好的例子。
https://stackoverflow.com/questions/25371921
复制相似问题