本文共 990 字,大约阅读时间需要 3 分钟。
一些简单的oracle查询优化
-
使用where过滤行 如果查询数据时禁止用程序过滤数据,尽量在sql中过滤数据。例如 查询性别为男的用户记录,一定要在where条件中过滤记录不能通过查询所有结果后在程序里面过滤
-
使用表连接而不是多个查询 在涉及到查询多个时,尽量使用表之间的连接进行查询,不要单独进行查询,然后再通过程序把结果集合起来。
-
执行连接时使用完全限定的列引用 在查询中包含表的别名,并为查询所引用的每列制定合适的别名,这样查询就不需要去查询表的列。
-
使用CASE表达式而不是多个查询 当要对一个表的相同自行许多计算时,使用CASE表达式而不是用多个查询
Select
Cont(case when price <13 then 1 else null end ) low,
Cont(case when price between 13 and 15 then 1 else null end ) med,
Cont(case when price >13 then 1 else null end ) high
from table
-
增加表索引 1.要对指定的查询条件创建索引,但是在查询中用到 like '%name%' 是不走索引的尽量采用 like '%name' or like 'name%' 。
2.创建函数索引
如果查询条件为通过函数查询 例如 where name = Upper('AaBbCcDd') ,这样要创建Upper(name)索引
3.内容经常重复的字段不能建索引,例如性别之类的字段,里面的数据重复几率太大,不用创建索引。
-
使用WHERE而不用HAVING Where用于过滤行,having用于过滤组,因为行被分组后,having才能过滤组,所以尽量用where过滤
-
使用exists而不用IN 因为Exists只检查行的存在,而in检查实际值。
-
使用相同的SQL 如果执行相同,oracle会使用缓存里面的数据,使用的SQL 必须绝对相同
所有字符必须相同
大小写要相同
空格要相同
上面为一些简单的oracle SQL 注意地方。其实oracle优化还有很多,例如怎么去创建表空间,表空间怎么发布,怎么去创建索引,索引处理,怎么应用oracle的缓存,还有oracle独有的基于成本的优化等。这里面就大有学问了,希望大家一起交流。
转载地址:http://cdebi.baihongyu.com/