1.创建索引,在大量甚至海量数据的表里有索引检索的速度要比没有索引检索快上几个数量级。
2.视图,视图本身不能建立索引,但是视图可以应用引用表的索引,当引用表的字段结构未变化时。
3.IN , NOT IN ==>替换方案EXISTS, NOT EXISTS
尤其是NOT IN不能应用表的索引,建议不使用。在 JOIN 关联后 也最好不要使用IN.
但是如果是 IN (12,21,13,14) 这种还是可以使用, 这种用法比 OR ....OR...OR 要快一点儿。
4. <> , !=
不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。
a!=0 改为 a>0 or a<0
a!=’’ 改为 a>’’
5. > 或者<
a>1 改为 a>=1 , b < 2 改为 b<=2;
这里涉及到索引的应用问题,利用>= 或 <=能够更好的应用索引。
6. WHERE 后的条件顺序
mysql 采用从左至右的顺序解析WHERE子句,那些可以过滤掉最大数量记录的条件写在WHERE子句的前面。
ORACLE 采用从右至左的顺序解析WHERE子句,那些可以过滤掉最大数量记录的条件写在WHERE子句的末尾。
7. GROUP BY
Group BY 后面跟的分组条件越多越慢,切忌不要无谓的添加分组条件。
8. 在sql文中转换类型会非常的慢 尽量不要使用 to_char, to_date 等函数。
9. SELECT子句中避免使用 *
WHERE exsits (select * from XX_table) ==> WHERE exsits (select id from XX_table)