如何度量sql查询的结果
本文关键字:sql 查询 结果 度量 何度量 | 更新日期: 2023-09-27 18:04:15
我有一个简单的工具来搜索给定的数据库。用户可以提供许多条件,我的工具根据这些条件将sql查询组合在一起。然而,我想防止查询被执行,以防它返回太多的记录。例如,在情况下,用户留下所有的过滤器空白,然后查询将从数据库中拉出所有的记录,这将需要几十分钟。当然,对于我的任何用户来说都不是必需的。所以我想要一些限制
我正在考虑在每个"真实"查询之前运行具有相同条件的count()
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结果集