- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含大约 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/
有没有办法查看 ROWCOUNT 设置为多少? 用于调用我的存储过程的组件有一个选项可以限制返回的行数,但它显然是通过设置 ROWCOUNT 来实现的。一个存储过程仅返回单个聚合行,但中间查询有时返回
Link @@Rowcount is used to inform the number of rows affected for the last select,insert,update or d
我有一个 SQL Server 存储过程(使用 SQL Server 2008 R2),它执行多个不同的表更新。更新行后,我想在审核表中记录信息。 这是我的伪代码: UPDATE tblName SE
所以我正在尝试这样做.. $userID = $_SESSION['user_session']; $stmt = $this->db->prepare("SELECT * FROM
我的查询有问题。我最近切换到 PDO,这对我来说有点陌生。现在我需要在我的查询中使用 JOIN 来从另一个表中获取数据而无需执行两次。 问题是,我得到这个错误: Call to a member fu
我在两个不同的页面上不断收到 function rowCount() on a non-object 错误。知道为什么会发生这种情况以及我如何更改代码以防止它发生吗? 错误-如下 Fatal erro
我有这个问题: $butacas= $this->pdo->prepare('SELECT COUNT( * ) FROM `usuarios` WHERE `sala` LIKE :nombreSa
我有一个返回团队列表的 SQL 函数。 我想通过联合将附加列表加入该列表,但前提是第一个选择返回多行。 就像是: CREATE FUNCTION Teams() RETURNS TABLE AS RE
我有这个存储过程来保存两个表 ACDPrograms 和 DefaultCourses 中的值。这是我的全局参数 create proc USPSvUpdtACDProgramFromTypes
我正在根据我提前确定的参数运行一组迭代 SQL 查询。执行此 .sql 脚本中的每组查询并将行插入到临时表中。我想做的是在将一行插入临时表后停止其余语句的执行。为此,我在每次插入后检查@@ROWCOU
下面是我拥有的 SQL 脚本的简化版本。 print @RowNum 始终显示 0,而不是第一个结果集的真实记录数。怎么了?谢谢。 declare @i int, @RowNum int set @i
我有这个存储过程来保存两个表 ACDPrograms 和 DefaultCourses 中的值。这是我的全局参数 create proc USPSvUpdtACDProgramFromTypes
@@rowcount 的范围是什么? MSDN没有提及其范围。 Returns the number of rows affected by the last statement. 好的。 在我的 S
我正在使用带有 SELECT 的 INSERT 将一个数字或行插入到一个表中。事务完成后,我想将@@ROWCOUNT 和@@ERROR 值都存储到locallay 声明的变量中。 INSERT Sub
我见过人们这样使用 rowCount... if ($q -> rowCount() prepare("SELECT * FROM hotlinks WHERE id = ?"); $q -
我正在使用以下查询更新 mysql 数据库中的多条记录。 $conn->beginTransaction(); try { $stmt = $conn->prepare('UPDATE pro
我有以下代码: $queryMobileNumber = $dbh->prepare("SELECT mobile_number FROM $tableBusinessOwner WHERE busi
在 mysql 中创建新用户: $query = $dbconnection->prepare("CREATE USER 'john'@'localhost' IDENTIFIED BY 'mypas
我正在使用 PDO rowCount() 来了解 UPDATE 是否成功。问题是 rowCount() 在查询成功但没有要更新的行的情况下不会返回任何内容。 这对我不利,因为在这种情况下我运行 INS
我目前正在开发一个在 32 位机器上运行良好的 python 应用程序。现在我必须转移到 64 位。我目前面临的问题是这里没有正确获取数据库中的数据,但是如果我在 32 位机器上运行相同的查询,它就可
我是一名优秀的程序员,十分优秀!