death114 发表于 2016-11-6 09:16:59

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

  
  
页: [1]
查看完整版本: SQL Server 2005视图及子查询ORDER BY语句的解决方案