Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.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 对于包含163020行的表,选择[all columns]以1:02为单位_Sql_Sql Server_Azure Sql Database_Azure Sql Server - Fatal编程技术网

Sql 对于包含163020行的表,选择[all columns]以1:02为单位

Sql 对于包含163020行的表,选择[all columns]以1:02为单位,sql,sql-server,azure-sql-database,azure-sql-server,Sql,Sql Server,Azure Sql Database,Azure Sql Server,这是一个Azure SQL数据库。这是一张小桌子,真的。我不是在做选择。我正在命名表中的所有列 该表具有带聚集索引的PK。它还有一个包含两列的非聚集索引 最初,SELECT语句运行了39秒。但在我对这两个索引进行了重新组织之后,现在需要1:02。所以,我让事情变得更糟。幸运的是,这是一个DEV表 我怎样才能至少回到我开始时的39秒?还有,我还应该寻找什么来解释这种缓慢 如果有帮助,这是执行计划 我还启动了SQL Profiler并运行了一个跟踪,但它返回了这么多数据,老实说,我不知道我在结果中寻

这是一个Azure SQL数据库。这是一张小桌子,真的。我不是在做选择。我正在命名表中的所有列

该表具有带聚集索引的PK。它还有一个包含两列的非聚集索引

最初,SELECT语句运行了39秒。但在我对这两个索引进行了重新组织之后,现在需要1:02。所以,我让事情变得更糟。幸运的是,这是一个DEV表

我怎样才能至少回到我开始时的39秒?还有,我还应该寻找什么来解释这种缓慢

如果有帮助,这是执行计划

我还启动了SQL Profiler并运行了一个跟踪,但它返回了这么多数据,老实说,我不知道我在结果中寻找什么

这是选择@@Version的结果

Microsoft SQL Azure RTM-12.0.2000.8 2019年1月3日00:14:33 版权所有C 2018微软公司


也许重建索引?创建一个覆盖索引(包含所选所有列的索引)将允许查询即时运行。除此之外,是否有任何列包含非常大的blob?我还将研究磁盘IO性能。这似乎异常缓慢。

根据BoCoKeith的评论,我认为网络延迟似乎是问题所在。它参差不齐而且不一致。但是,此查询将始终在00:00秒内运行:

SELECT * INTO #sometemptable FROM MyTable
而这个时间从00:20到01:40

SELECT * FROM MyTable

谢谢这是一个Azure SQL数据库,因此我不确定如何查看磁盘IO性能。至于覆盖索引,我不确定这意味着什么,但我会用谷歌搜索它!覆盖索引是一种非聚集索引,包含查询所需的所有字段。需要注意的一点是,索引过多也会导致问题,因此请确保在为特定表创建的索引数量上保持平衡。他必须使用覆盖索引,否则解释计划将通过rid再次与表连接,在图像中,所有的东西都从索引中恢复了,这可能会解决问题。首先,我只选择PK列。如果性能良好,我会继续添加列,直到性能下降,然后我会看到这告诉我什么。如果性能不好,我会检查这是否是网络问题,所以我会从中进行选择,如果速度快,就怀疑是网络传输问题。如果选择进入仍然很慢,我将不得不开始变得更认真。什么设置统计IO显示?还有,在执行选择时,该会话会经历什么等待?您选择重新组织而不是重建的原因是什么?@TT,据我所知,索引碎片化的百分比并不保证重建。PK为7%,非聚集为1%@MartinSmith,我不知道如何在IO上使用集合统计