oracle 优化sql语句
操作方法
- 01
一、执行顺序及优化细则 1.表名顺序优化(1) 基础表放下面,当两表进行关联时数据量少的表的表名放右边表或视图: (2) 当出现多个表时,关联表被称之为交叉表,交叉表作为基础表 2.where执行顺序where执行会从至下往上执行 摆放where子句时,把能过滤大量数据的条件放在最下边 3. is null 和is not null当要过滤列为空数据或不为空的数据时使用 4.使用表别名当查询时出现多个表时,查询时加上别名,避免出现减少解析的时间字段歧义引起的语法错误。 where执行速度比having快尽可能的使用where代替having 6. * 号引起的执行效率尽量减少使用select * 来进行查询,当你查询使用*,数据库会进行解析并将*转换为全部列。 二、替代优化1、用>=替代> 2、用UNION替换OR (适用于索引列) 3、用in 代替or 4、 Union All 与UnionUnion All重复输出两个结果集合中相同记录如果两个并集中数据都不一样.那么使用Union All 与Union是没有区别的, 5、分离表和索引 总是将你的表和索引建立在另外的表空间内 决不要将这些对象存放到SYSTEM表空间里 三、一些优化技巧 1、计算表的记录数时 select count(si.student_id) from Student_info si(student_id为索引)与select count(*) from Student_info si执行时.上面的语句明显会比下面没有用索引统计的语句要快 2.使用函数提高SQL执行速度 当出现复杂的查询sql语名,可以考虑使用函数来提高速度查询学生信息并查询学生(李明)个人信息与的数学成绩排名如 4、用Exists(Not Exists)代替In(Not In) 在执行当中使用Exists或者Not Exists可以高效的进行查询