我有一个SQL查询,我将在网上传输相当数量的响应数据,但我希望尽快获得总行数,以便在UI中进行绑定。基本上我需要获得满足特定条件的所有行的快照,然后能够翻阅所有结果行。
以下是我目前的情况:
SELECT --primary key column INTO #tempTable FROM --some table --some filter clause ORDER BY --primary key column SELECT @@ROWCOUNT SELECT --the primary key column and some others FROM #tempTable JOIN -- some table DROP TABLE #tempTable
每隔一段时间,查询结果就会出现故障(大概是因为我正在从临时表中进行无序选择)。
在我看来,我有几个选择:
这样做的最佳方式是什么?
答案 0 :(得分:2)
使用数字2.仅仅因为你在表上有一个主键并不意味着将对select语句的结果集进行排序(即使你实际看到的是这样)。
将数据放入临时表时无需对数据进行排序,因此请将其取出。无论如何,你都会获得相同的@@ ROWCOUNT值。
这样做:
SELECT --primary key column
INTO #tempTable
FROM --some table
--some filter clause
SELECT @@ROWCOUNT
SELECT --the primary key column and some others
FROM #tempTable
JOIN -- some table
ORDER BY --primary key column
DROP TABLE #tempTable
答案 1 :(得分:1)
将订单从第一个选择移动到第二个选择。
数据库不是电子表格。您不会以特定顺序将数据放入表 。
请确保在退回时正确订购。
答案 2 :(得分:-3)
我个人会按照你想要的顺序选择数据。因此,在您的第一个选择中,请按顺序排序。这样它就可以利用任何现有的索引和访问路径。