①创建必要的索引
②使用预编译查询
③使用参数化sql会执行预编译,第一次执行的时候DBMS会为这个SQL语句进行查询优化并执行预编译
④调整where子句中的连接顺序
⑤DBMS一般次用自上而下的顺寻解析where子句,根据这个原理,表连接最好写在其它where条件之前,这样可以过滤掉最大数量记录
⑥select语句中避免使用*
⑦尽量将多条sql语句压缩成一条sql中
⑧用where子句替换having子句
⑨避免使用having子句因为它在聚合后过滤数据,过滤应放在聚合前
⑩使用表的别名
表别名可以减少解析时间
11、用Exists替代IN
in子句将执行一个子查询内部的排序和合并
12、用表连接替代EXISTS
13、避免在索引列上使用计算,会造成全表扫描
14、避免隐式类型转换造成的全表扫描
15、防止检索范围过宽
like、is not null可能会造成优化器匹配的记录太多