-
使用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 必须绝对相同
所有字符必须相同
大小写要相同
空格要相同