SQL 性能,使用 OPTION (FAST n)

标签 sql sql-server sql-server-2008 tsql

谁能告诉我在 SQL 查询中使用 OPTION (FAST n) 的缺点是什么。

比如我这么快就抓取了10万条记录,但这对SQL Server的其他进程有影响吗?

<小时/>

我正在接近我的问题。

我必须每周运行一次数据处理。因此,第一个结果会在 5-7 秒后出现,然后我对这些结果进行数据处理。结果通常由几千行组成。每行都需要几秒钟的时间来处理。通常,该过程会等待整个结果出现,然后开始处理。结果出现在数据集中(我正在使用 c# 控制台应用程序),所以我希望快速显示前 10 个结果,以便我可以立即启动该过程,然后显示其余行并添加到队列中,等待转弯。

知道我该怎么做吗。

谢谢

最佳答案

选项 fast 强制查询优化器不优化查询的总运行时间,而是优化获取前 N 行所需的时间。

如果您想要连接 2 个包含 100 万行的表,则标准查询计划是一个表的 HashMap (包含一百万行的临时表),然后在另一个表上使用 HashMap 查找。

快速 10 优化可能只使用嵌套循环,因为构建 100 万行 HashMap 的工作量比快速 10 步嵌套循环要多得多。如果您总共有 100 万行,则嵌套循环可能需要 3 倍的时间,但在快速 10 下,您会更快地获得这 10 行。 (此示例假设存在合适的索引)

关于SQL 性能,使用 OPTION (FAST n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13853412/

相关文章:

sql-server-2008 - SQL 2008 镜像,处于 "restoring"状态

sql-server - TSQL - 使用交叉应用和透视查看

sql-server - 在 SQL CLR 程序集中配置远程数据库连接字符串

c# - 系统.Data.SqlClient.SqlException : 'Invalid column name ' '

SQL Server 2008 - 缩小事务日志 - 有什么自动化方法吗?

sql - 如何避免此子查询并创建索引 View ?

mysql - SQL 查询以选择最少 10 个结果

php - mysql_query varchar 更新不适用于 "-"

php - MATCH ... AGAINST 无法得出确切的结果

sql - 在 SQL Server 2008 中,如何检查 varchar 参数是否可以转换为数据类型 money?