首页 >数据库 >mysql教程 >为什么在 SQL 查询中使用'SELECT TOP 100 PERCENT”?

为什么在 SQL 查询中使用'SELECT TOP 100 PERCENT”?

Barbara Streisand
Barbara Streisand原创
2025-01-04 03:30:38501浏览

Why Use

为什么使用“选择前 100%”?

在 SQL Server 2005 之前,开发人员使用“选择前 100%”技巧来启用订单视图定义中的 by 子句。然而,除了这个目的之外,今天继承的一些代码仍然在 ASP.NET 应用程序的 ADO 中使用的动态 SQL 语句中包含“选择前 100%”。

问题:是否有使用“的理由”在这些场景中“前 100%”?

答案:中级物化

根据 Adam Machanic 等专家的说法,“选择前 100%”用于“中级物化”。原因如下:

在 SQL Server 中,可以根据情况以不同的顺序评估查询。例如,由于计算顺序不明确,以下两个查询可能会产生不同的结果:

SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100

SELECT foo
FROM
    (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar
WHERE
    CAST(foo AS int) > 100

但是,在 SQL Server 2005 之前,将内部查询括在“Select Top 100 Percent”中会强制使用内部查询被假脱机处理,从而产生一致的评估顺序:

SELECT foo
FROM
    (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar
WHERE
    CAST(foo AS int) > 100

警告注意

虽然这种技术在过去是可以接受的,但通常建议避免在动态 SQL 中使用“选择前 100%”。由于补丁级别、架构、索引或行计数的变化,结果可能不一致。

以上是为什么在 SQL 查询中使用'SELECT TOP 100 PERCENT”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn