jsczxy2 发表于 2013-1-14 09:06:24

oracle索引介绍

今天用oracle表连接查询感觉太慢了,想了下应该是索引没有建才导致这样的问题,以后还是注意数据库的索引的优化才好...... 
1.索引分类
  a) 唯一索引,    作用是数据约束,保证数据唯一,还有就是数据索引,提高查询效率
  b)一般索引,只有数据索引的作用,
  2.唯一索引的建立
  create unique index 索引名 on    表名(字段名)
  ok,假设有一个Emploeyy表,里面有一个empName字段,我们来为empName添加唯一索引
  create unique index    idx_empname on employee(empname);
  3.一般索引
  create index 索引名 on 表名(字段名)
  ok,现在我们为employee的address字段,添加一般索引
  create index idx_address on employee(address);
  我们还可以为两多个字段建立索引
  create unique index idx_test on employee(field1,field2);
  这样,为field1,field2添加了唯一索引,field1和field2的组合是唯一的了
  还可以指定索引排序
  create index idx_test    employee(field1 ,field2 desc);;
  4.函数索引
  如果在我们的查询条件使用了函数,那么索引就不可用了。
  可以用建立函数索引的方式,来解决这个问题
  例如:
  select * from product where nvl(price,0.0)>1000.0 ;
  这里,nvl(price,0.0)使用了函数,索引不能利用price字段上做的索引了
  ok,我们来创建函数索引
  create index index_price on product(nvl(price,0.0));
  5.索引的删除
  drop index 索引名
  drop index idx_empname;
  6.其它的
  唯一索引能极大的提高查询速度,而且还有唯一约束的作用
  一般索引,只能提高30%左右的速度
  经常插入,修改,应在查询允许的情况下,尽量减少索引,因为添加索引,插入,修改等操作,需要更多的时间
  可以在order by的字段,where的条件字段,join的关联字段添加索引
  比如:
  select * from table1   t1
  left join table2   t2 on t1.字段A=t2.字段B
  where t1.字段C = '值'
  order by t1.字段D
  这里,A,B,C,D字段,都应该添加索引
页: [1]
查看完整版本: oracle索引介绍