出自灵魂
前几天自己整理的一个,平时开发过程中也尽量按照这些来做的。。有什么不妥的地方望各位指正。。
1.1. 操作符
1.1.1 慎用NOT IN, NOT IN会多次扫描表,使用EXISTS、NOT EXISTS、IN、LEFT OUTER JOIN来替代,特别是左连接,而Exists比IN更快,最慢的是NOT操作.
1.1.2 使用in时,在in后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,这样可以减少判断的次数。
1.1.3 如果使用了IN或者OR等时发现查询没有走索引,使用显式申明指定索引,如:Select * From FA01(INDEX=IX_SEX) Where AA0107 IN(‘01’,‘02’)。
1.1.4 用OR的字句可以分解成多个查询,并且通过UNION连接多个查询。他们的速度只同是否使用索引有关,如果查询需要用到联合索引,用UNION all执行的效率更高.多个OR的字句没有用到索引,改写成UNION的形式再试图与索引匹配。一个关键的问题是否用到索引。
1.1.5 Between在某些时候比IN速度更快,Between能够更快地根据索引找到范围。用查询优化器可见到差别。
select * from chineseresume where title in ('男','女')
Select * from chineseresume where between '男' and '女'
是一样的。由于in会在比较多次,所以有时会