银行

多列索引的疑问

由于数据库在生产环境,不方便贴信息,描述下

有个表,大概10个字段,其中有两个字段eventid和sign,eventid是int型,sign是varchar(256)

做了个索引(sign,eventid)

按照如下语句搜索
1. db2 "select * from **** where eventid=51000 and sign like 'ENT%' "
然后发现走了索引,大概是ixscan->sort->ridscan->fetch

这里有第一个问题,为什么ixscan后,要做sort?我并没有排序啊

然后使用第二个语句:
2. db2 "select * from **** where eventid=51000 and sign like '%ENT%' "
也走了索引,大概是ixscan->fetch,没有排序,但是cost是上面一种情况的3倍

按原来的理解,like后面是%开头的,是不会走索引的。且多列索引,如果where条件中的列不在多列索引的开头列,就不会走这个多列索引。 那现在是什么情况?是不是我的理解有误?
参与6

提问者

ysgift
数据库管理员招商银行
擅长领域: 系统运维智能化运维

问题状态

  • 发布时间:2013-08-14
  • 关注会员:1 人
  • 问题浏览:3190
  • 最近回答:2013-08-15
  • X社区推广