7、where条件之后尽量减少使用函数或数据类型转换

  换句话说,WHERE条件之后尽量可以使用可以嗅探参数的方式,比如说尽量少用变量,尽量少用函数,下面我们通过一个简单的例子来看这之间的差别。如图4所示。

图4.在Where中使用不可嗅探的参数导致的索引查找

  对于另外一些情况来说,尽量不要让参数进行类型转换,再看一个简单的例子,我们可以看出在Where中使用隐式转换代价巨大。如图5所示。

图5.隐式转换带来的性能问题

  8、不要使用旧的连接方式,比如(from x,y,z)

  可能导致效率低下的笛卡尔积,当你看到下面这个图标时,说明查询分析器无法根据统计信息估计表中的数据结构,所以无法使用Loop join,merge Join和Hash Join中的一种,而是使用效率地下的笛卡尔积。

  >   这里我再补充一点,我说得是“可能”导致,因为上面这个查询可能作为中间结果或是子查询,当你忘写了where条件时,会是笛卡尔积。你在终结果中再用where过滤,可能得到的结果一模一样,但是中间的过程却大不相同。

  所以,尽量使用Inner join的方式替代from x,y,z这种方式。