首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL大表的性能改进

SQL大表的性能改进
EN

Stack Overflow用户
提问于 2014-08-18 20:59:18
回答 4查看 1.8K关注 0票数 0

我在SQL server中有260列表。当我们运行“从表中选择计数(*)”时,需要花费几乎5-6才能得到计数。表中包含接近90至1亿条记录,其中260列中超过50 %的列包含NULL。除此之外,用户还可以从UI对表构建动态sql查询,因此搜索9,000万至1亿条记录将需要时间来返回结果。是否有方法改进SQL表的查找功能,其中筛选条件可以是任意的,any1是否可以建议我以最快的方式获得25 or数据上的聚合数据-- .Ui应该挂起或超时?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-19 00:00:47

调查水平划分。如果可以强制用户将分区键放入谓词中,这将真正有助于查询性能。

尝试垂直分区,其中将一个260列表拆分为几个列较少的表。将通常需要的所有值放在一个表中。查询只引用包含所需列的表。这将为每个页面提供更多的行,即每个查询的页面数更少。

你有很高比例的零值。稀疏柱可能会有帮助,但是计算一下你的百分比,因为如果不合适的话,它们可能会伤害你。这里有一个所以问题。

如果DB经常运行类似的查询,则筛选索引和筛选统计信息可能很有用。

票数 1
EN

Stack Overflow用户

发布于 2014-08-18 21:31:44

我想到的是:

  1. 如果使用Server 2012,则可以使用新的2012+。
  2. 如果正在筛选文本列,则可以使用2005+
  3. 如果您有一些在某些列中经常应用的函数(例如,列的SOUNDEX ),则可以创建PERSISTED COMPUTED COLUMN以避免每次计算此值。
  4. 使用临时表(索引表会更好)来减少要处理的行数。

@第十二条评论很好:

“我认为您需要创建一个ETL流程,并开始将其更改为一个带有维度的事实表。”

票数 0
EN

Stack Overflow用户

发布于 2014-08-18 21:34:25

正如这些家伙在评论中所述,您需要分析几个查询,看看哪些索引对您最有帮助。如果查询进行了大量搜索,则可以使用MSSQL服务器的全文搜索功能。这里,您将找到一个很好的参考资料,并有好的例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25371921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档