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