Chinaunix首页 | 论坛 | 博客
  • 博客访问: 426227
  • 博文数量: 137
  • 博客积分: 5190
  • 博客等级: 大校
  • 技术积分: 997
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 16:19
文章存档

2011年(17)

2010年(120)

我的朋友

分类: Mysql/postgreSQL

2010-03-23 22:56:39

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