SQLSERVER SQL性能优化
SQLSERVER SQL 性能优化系列 1. 选择最有效率的表名顺序 ( 只在基于规则的优化器中有效 ) SQLSERVER 的解析器按照从右到左的顺序处理 FROM 子句中的表名,因此 FROM 子句中写在最后的表(基础表 driving table )将被最先处理,在 FROM 子句中包含多个表的情况下,必须选择记录条数最少的表作为基础表,当 SQLSERVER 处理多个表时,会运用排序及合并的方式连接它们, 首先,扫描第一个表( FROM 子句中最后的那个表 ) 并对记录进行排序;然后扫描第二个表( FROM 子句中最后第二个表 ) ;最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并 例如 : 表 TAB1 16,384 条记录表 TAB2 5 条记录,选择 TAB2 作为基础表 ( 最好的方法 ) select count(*) from tab1,tab2 执行时间 0.96 秒,选择 TAB2 作为基础表 ( 不佳的方法 ) select count(*) from tab2,tab1 执行时间 26.09 秒; 如果有 3 个以上的表连接查询,那就需要选择交叉表( intersection table )作为基础表,交叉表是指那个被其他表所引用的表 例如 : EMP 表描述了 LOCATION 表和