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-》属性-》高级-》启动参数-》增加

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值