MSSQL - 有关插入查询如何运行的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MSSQL - 有关插入查询如何运行的问题相关的知识,希望对你有一定的参考价值。
我们有两个表要合并。比如说table1和table2。它们具有完全相同的列,并且具有完全相同的目的。不同之处在于table2具有更新的数据。我们使用了一个使用LEFT JOIN的查询来查找它们之间常见的行,并在合并时跳过这些行。问题是这个。两个表都有500M行。
当我们运行查询时,它一直在继续。它持续了一个小时。我们确定这是因为行数很多。
但是当我们想看看已经向table2插入了多少行时,我们运行了代码select count(*) from table2
,它给了我们与开始时相同的table2行数。
我们的问题是,它应该是怎样的?在找到所有匹配项后,是否同时插入所有行?
如果您想读取未提交的数据,则应该修改计数,如下所示:
select count(*) from table2 WITH (NOLOCK)
NOLOCK过度使用,但在这种特定情况下,它可能很方便。
没有数据逐个插入或更新。
我不知道它与"Select count(*) from table2 WITH (NOLOCK) "
有什么关系
Join condition
花费太长时间来生成将由插入运算符使用的Resultset
。因此实际上没有插入,因为没有生成结果集。
连接查询花费的时间太长,因为左连接条件产生非常高的cardinality estimate
。
所以必须首先修复加入条件。
为此需要其他信息,如表模式,数据类型和长度以及现有索引,要求。
以上是关于MSSQL - 有关插入查询如何运行的问题的主要内容,如果未能解决你的问题,请参考以下文章
你如何在 python 中处理 graphql 查询和片段?
html 有关如何在任何页面上插入Nuvo Express按钮的小片段。此按钮居中对齐,并在新窗口中打开目标URL。