gpt4 book ai didi

sql - 为什么 TOP 或 SET ROWCOUNT 使我的查询如此缓慢?

转载 作者:行者123 更新时间:2023-12-03 02:50:54 32 4
gpt4 key购买 nike

我有一个包含大约 1400 万行的 SQL Server 2008 数据库。其中有两个表

Table1
rowId int, primary key
someData1 int
someData2 int...

Table2
id int, primary key
rowId ==> int, refers to the rowId from Table1
someCalculatedData int...

Table2.rowId is not a foreign key, but I did make a Non-clustered, Non-Unique index on it

当我导入数据时,我将所有数据插入到 Table1 中,然后找到 Table2 中没有条目的行并将数据插入到该表中。

我通过一次选择 250,000 行,处理数据并将它们插入到 Table2 中,然后查找接下来的 250,000 行,依此类推,直到它们成为 Table1 中没有任何条目的行,从而批量执行此操作见表2。

select TOP 250000 rowId from Table1 
where NOT EXISTS (select rowId from Table2 where Table1.rowId=Table2.rowId)

此查询确实变慢了,现在需要两分钟多才能获取下一批。如果我在没有 TOP 或 SET ROWCOUNT 关键字的情况下运行查询并获取所有行,则查询将在约 15 秒内返回结果。

有谁知道为什么 TOP 和 SET ROWCOUNT 会导致查询花费比获取所有数据更长的时间?

我可以提高查询性能,但每次仍然只获取数据的子集吗?

最佳答案

看看这是否有帮助

select top 250000 t1.rowid 
from Table1 t1
left outer join table2 t2
on t1.rowid=t2.rowid
where t2.rowid is null

关于sql - 为什么 TOP 或 SET ROWCOUNT 使我的查询如此缓慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759797/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com