Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
大型表的SQL Server性能调优_Sql_Sql Server - Fatal编程技术网

大型表的SQL Server性能调优

大型表的SQL Server性能调优,sql,sql-server,Sql,Sql Server,到目前为止,我有一个755列的表,大约保存了200万条记录,并且它将不断增长。有许多过程通过其他表连接来访问它,但运行速度很慢。现在很难对它们进行拆分/规范化,因为所有的东西都已经构建好了,客户也不准备在上面花太多钱。有没有办法让查询更快地访问该表?请告知 列存储索引有用吗?755列太多了。您应该尝试索引where子句中主要使用的列。这可能会加快处理过程755列,这太多了。您应该尝试索引where子句中主要使用的列。这可能会加快进程他们准备花多少钱 可以将该表拆分为多个1对1连接的表(垂直分区)

到目前为止,我有一个755列的表,大约保存了200万条记录,并且它将不断增长。有许多过程通过其他表连接来访问它,但运行速度很慢。现在很难对它们进行拆分/规范化,因为所有的东西都已经构建好了,客户也不准备在上面花太多钱。有没有办法让查询更快地访问该表?请告知


列存储索引有用吗?

755列太多了。您应该尝试索引where子句中主要使用的列。这可能会加快处理过程

755列,这太多了。您应该尝试索引where子句中主要使用的列。这可能会加快进程

他们准备花多少钱

可以将该表拆分为多个1对1连接的表(垂直分区),然后使用视图将其作为单个blob呈现给现有代码

如果运气好的话,你可能会经常参加淘汰赛,这会让你觉得很值得

视图可能需要
而不是
触发器来完全复制现有逻辑
而不是
触发器有许多限制,例如不支持
输出
子句,这可能很难克服,具体取决于您的具体设置

您可以将视图命名为与现有表相同的名称,这样就无需到处修改代码

在我看来,这是除了完整的DB重新分解练习之外最简单的方法


看:他们准备花多少钱

可以将该表拆分为多个1对1连接的表(垂直分区),然后使用视图将其作为单个blob呈现给现有代码

如果运气好的话,你可能会经常参加淘汰赛,这会让你觉得很值得

视图可能需要
而不是
触发器来完全复制现有逻辑
而不是
触发器有许多限制,例如不支持
输出
子句,这可能很难克服,具体取决于您的具体设置

您可以将视图命名为与现有表相同的名称,这样就无需到处修改代码

在我看来,这是除了完整的DB重新分解练习之外最简单的方法


请参阅:

这很好,不用担心,实际上您有多少列在sql server中并不重要(但请注意我说的“有”)。主要问题是数据计数和查询中选择的列数。首先有几点你可以检查一下

  • 不要使用*选择器,如果在任何地方都使用,请更改它
  • 在连接中,不要直接使用它,您可以先将其过滤为内部选择。(试试看,我不知道你的桌子,所以我告诉你一般规则。)
  • 尝试减少旧记录的ex:use history表的数据计数。此技术取决于您所在组织的需要
  • 尝试使用列索引之类的功能
  • 当然,还要删除查询中的动态选择

  • 我希望其中一个能起作用。

    没关系,不用担心,实际上有多少列在sql server中并不重要(但请注意我说的“有”)。主要问题是数据计数和查询中选择的列数。首先有几点你可以检查一下

  • 不要使用*选择器,如果在任何地方都使用,请更改它
  • 在连接中,不要直接使用它,您可以先将其过滤为内部选择。(试试看,我不知道你的桌子,所以我告诉你一般规则。)
  • 尝试减少旧记录的ex:use history表的数据计数。此技术取决于您所在组织的需要
  • 尝试使用列索引之类的功能
  • 当然,还要删除查询中的动态选择

  • 我希望其中一个能起作用。

    755列——那里已经出了很多问题。索引会有帮助,但由于你的问题太广泛,我们只能给你这个提示。755列?这肯定是StackOverflow上的记录。我会对你说,不是以一种坏的方式,告诉你的客户紧急停止,从头开始建造一切。755列?哦,男孩!!仅仅读取它是有害的。如果查询必须扫描大量数据并且需要列的子集,columnstore可能会有所帮助。现在,您可以将历史数据移动到历史表中吗?改变逻辑以适应这种情况?755列是行链接的杀手。在我看来,除了减少列数之外,没有什么好的解决方法。你可以尝试分成多个表并使用索引。755列-已经有很多列出错了。索引会有帮助,但由于你的问题太广泛,我们只能给你这个提示。755列?这肯定是StackOverflow上的记录。我会对你说,不是以一种坏的方式,告诉你的客户紧急停止,从头开始建造一切。755列?哦,男孩!!仅仅读取它是有害的。如果查询必须扫描大量数据并且需要列的子集,columnstore可能会有所帮助。现在,您可以将历史数据移动到历史表中吗?改变逻辑以适应这种情况?755列是行链接的杀手。在我看来,除了减少列数之外,没有什么好的解决方法。您可以尝试分成多个表并使用索引。