象like '%abc%'之类的查询对于大表来说是个致命的性能瓶颈。下面说说如何优化.
1.如何优化 like '%abc'.
这种优化建立反序索引就可以了。
2.如何优化 like 'abc%'
这种比较好办,直接建立索引就可以了
3.如何优化 like '%abc%'
/*oracle的做法
比如:
a.建立测试表mytable
create table mytable as select a.*,rpad('0',400,'0') dummy from all_objects a;
b.然后建立起索引作用的表mytable_myind
create table mytable_myind as select a.rowid rid,a.object_name from mytable a
c.把起索引作用的表mytable_myind钉到内存里面
alter table mytable_myind storage (buffer_pool keep);
alter table mytable_myind cache;
d.执行如下的sql语句:如果对于数据量大的表,那么速度有很大的提高。
select /*+rule*/ owner from mytable where rowid in
( select rid from mytable_myind
where object_name like '%DUAL%'
);
当然,可以使用触发器来更新表mytable_myind
*/
阅读(1404) | 评论(0) | 转发(1) |