Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1090616
  • 博文数量: 646
  • 博客积分: 288
  • 博客等级: 二等列兵
  • 技术积分: 5375
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-08 14:33
个人简介

为了技术,我不会停下学习的脚步,我相信我还能走二十年。

文章分类

全部博文(646)

文章存档

2014年(8)

2013年(134)

2012年(504)

分类:

2012-07-24 16:24:44

象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
*/
阅读(432) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~