禁忌18:慎用子查询
通过子查询方式进行数据的嵌套查询 SQL 的可读性比较好,但子查询很容易导致全表扫描,且容易导致回滚段或临时表空间使用过高,因此慎用子查询,特别是子查询的结果集也很大时忌用。
禁忌19:忌用SELECT *
在查询 SQL 语句中,要尽量减少返回的结果行,包括行数和字段列数。返回的结果越大,意味着相应的 SQL 语句的 logical reads 就越大,对服务器的性能影响就越甚。
一个特别不好的设计就是使用 SELECT * 返回表的所有数据,除了影响服务器性能外,还可能会由于表结构的调整在编译阶段无法发现,导致运行时错误。
禁忌20:where 子句中慎用!=或<>操作符
使用!=或<>意味着对应字段的访问不会使用索引,因此只有在其他字段使用了索引的基础上才使用!=或<>操作。
禁忌21:where 子句中慎用like
如果在where字句中使用字段 A like ‘%xxx’ 或字段 A like ‘%xxx%’方式匹配结果记录时,该字段不会使用索引,因此只有在其他字段使用了索引的基础上才使用字段 A like ‘%xxx’ 或字段 A like ‘%xxx%’ 方式,即忌用前置百分号匹配。