1.在经常需要进行检索的字段上创建索引。
索引的数量需要控制,过多的索引会降低insert或update的效率。
2.避免在索引上使用计算。
在where语句中,如果索引列是计算或者函数的一部分,则DBMS的优化器不会使用索引。
3.使用预编译查询(使用参数化SQL)。
既可以避免SQL注入漏洞攻击,数据库还会对参数化SQL进行预编译,在DBSM会为这个SQL进行查询优化。
4.尽量将多条SQL语句压缩到一句SQL中。
每次执行SQL时,都要建立网络连接、权限校验、查询优化、发送执行结果,这个过程是非常耗时的。
5.用where字句替换having字句。
where是在聚合前筛选记录,having只会在检索出所有记录后才进行过滤。
6.使用表的别名。
在连接多个表时,使用表的别名可以减少解析时间。
7.用union all替换union。
当确定检索结果不会有重复的记录时,使用 union all 可以提高效率。
8.使用“临时表”存放中间结果。
将临时结果存放在临时表,避免多次扫描主表,减少程序执行中“共享锁”阻塞“排它锁”(更新锁),提高并发性能。
9.避免在where字句中使用字段null值判断。
使用null值判断会导致引擎放弃使用索引而进行全表扫描。
10.在select语句中,不要返回用不到的字段。
在任何情况下,都不要使用“*”,需要用到什么,就返回什么。