对查询时经常用到的字段建立索引,如包含多个也可以构建复合索引,建立索引之后需要注意的一点是,查询时要确保和设计字段的格式是一致,如
SELECT * FROM TABLE WHERE USER_ID = 12345
这里USER_ID的类型是NUMBER,而实际设计表时如果USER_ID的类型是VARCHAR时,这里索引就会用不到,从而造成全表扫描。如发现查询时间过长,可以用
explain SELECT * FROM TABLE WHERE USER_ID = 12345
来查看明细
当表过大时,可以将老数据,历史数据进行归档(前提这些数据以后不用),减少数据量!!
经常用到的查询,或者较为复杂的查询时(多个表的联合查询)可以创建视图。
视图的优缺点:
优点:
缺点:
尽量不要有空判断的语句,空判断会导致全表扫描,对于空判断这种情况,可以考虑对这个列创建数据库默认值。
尽量不用不等于条件,这样容易导致全表扫描,尽量使用范围查询。
尽量使用exists代替In,或者用外连接代替in
尽量不用or条件,会导致全表扫描,可以分开查询然后union all
分库分表
左模糊查询尽量不要使用,会引起全表扫描
理论上尽量多使用多表查询(left),少使用子查询
WHERE子句中的连接顺序.:
ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
优化group by,提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉。
原文:https://www.cnblogs.com/vitasoy/p/11873051.html