如何度量sql查询的结果

本文关键字:sql 查询 结果 度量 何度量 | 更新日期: 2023-09-27 18:04:15

我有一个简单的工具来搜索给定的数据库。用户可以提供许多条件,我的工具根据这些条件将sql查询组合在一起。然而,我想防止查询被执行,以防它返回太多的记录。例如,在情况下,用户留下所有的过滤器空白,然后查询将从数据库中拉出所有的记录,这将需要几十分钟。当然,对于我的任何用户来说都不是必需的。所以我想要一些限制

我正在考虑在每个"真实"查询之前运行具有相同条件的count() sql查询,但这需要太多时间。

是否有任何选项来测量查询期间的记录,并在达到一定数量时停止查询?抛出异常,要求用户优化搜索

如何度量sql查询的结果

我使用这种方法:

声明您希望获取最多100行。构造您的查询,使其最多返回101行(与TOP N或更通用的ANSI方式通过过滤row_number)。然后你可以很容易地检测到是否有更多。你可以采取相应的行动,在我的例子中,显示"read more"

您可以运行一个测试查询来使用用户定义的选项搜索数据库,并且只返回返回结果的id字段,这将非常快,并且还允许您测试count()。然后,如果一切正常,则可以运行完整查询以返回所有结果。

根据上面的答案,如果您正在处理大量数据,请选择top N,并使用快速查询选项。

SELECT TOP 101 [ColumnName]
FROM [Table]
OPTION (FAST 101)

这取决于您的应用程序以及您希望它如何工作。

如果您只想在表上显示数据,并为查询设置最大大小就足够了。您可以在select语句中使用TOP。

SELECT TOP N [ColumnName]

但是考虑到你说计数需要太多时间,那么我认为你关心的是处理一个非常大的数据集,也许操纵它不一定只是从查询中获得有限的数据集。

然后一种方法是将作业分解成块并运行作业大小,因此获取前N行,然后获取下N行并重复,直到没有更多的值要返回。您还可以保留回滚和检查点的记录,以确保数据完整性。

类似的问题可能:根据数据大小限制SQL查询返回的记录的查询

如何遍历包含多个相关表的大型SQL结果集