SQL Server 2005视图及子查询ORDER BY语句的解决方案

现象:

在SQL Server2005中,出于优化系统的目的,在视图、子查询中嵌套order by时,sql优化器将忽略order by——即不保存内查询语句结果的顺序。

 在一定的场合下——如单个查询语句,这样确实起到强制优化的效果。但对做通用查询工具类来讲,有些地方确实需要排序。

 

解决方案:

1,语法解决:在需要排序的子查询语句中,在其select后面加入 top 100 percent 指令表示强制排序。

如:

原句

SELECT * FROM(

      SELECT  * 
      FROM CD_USER U 
      ORDER BY U.USER_CODE      
) T
 

修改后:

SELECT * FROM(

      SELECT TOP 100 PERCENT * 
      FROM CD_USER U 
      ORDER BY U.USER_CODE      
) T

 

2,兼容SQL SERVER2000:安装补丁

2.1 安装补丁:

http://support.microsoft.com/kb/926292/

2.2 配置数据库兼容级别

数据库-》右键-》属性-》选项-》兼容级别=》选择SQL Server 2000(80)

2.3 设置启动项

在要SQL Server服务上启动参数上增加:-t168。启动SQL Server Configuration Mananger,选择SQL Server-》属性-》高级-》启动参数-》增加

 


SQL Server 2005视图及子查询ORDER BY语句的解决方案_第1张图片

 

 

你可能感兴趣的:(sql,sql,server,Microsoft)