银行索引

db2索引是怎么判断是否走索引的?

在一个100多万行记录的表上的char(1)列C上做了个索引
runstats后测试了一下各个语句是否走索引

结果发现select * from tabname where C='0' 不会走索引
select * from tabname where C != '0' 会走索引

用db2expln来看的

我认为都应该走索引才对。。。 比较奇怪
顺便问一下,例如select A,B,C from *** where C!='0' 这种类型的语句,在db2advis里面,会建议建立 A,B,C三列的多列索引,这是为什么?我觉得只要在C上建索引就足够了应该
参与7

4同行回答

drdb2drdb2系统工程师se
select count(*) from tabname where C='0' returns how many rows?select count(*) from tabname where C!='0' returns how many rows?if " C!='0'" contains ton of rows, there is no reason to do index scanThe primary purpose of indexing is to help returning ...显示全部
select count(*) from tabname where C='0' returns how many rows?
select count(*) from tabname where C!='0' returns how many rows?
if " C!='0'" contains ton of rows, there is no reason to do index scan
The primary purpose of indexing is to help returning small portion of data.收起
互联网服务 · 2014-02-05
浏览1547
asr_06asr_06存储工程师ABC
对于顺便问的那个问题,“建立 A,B,C三列的多列索引”,这样的话该查询的数据就可以从索引里直接获取,不用再重复读取数据页,因此db2advis里给的建议是没有错的。显示全部
对于顺便问的那个问题,“建立 A,B,C三列的多列索引”,这样的话该查询的数据就可以从索引里直接获取,不用再重复读取数据页,因此db2advis里给的建议是没有错的。收起
银行 · 2014-02-18
浏览1571
共同进步共同进步数据库架构师中国金融电子化公司
2楼正解显示全部
2楼正解收起
软件开发 · 2014-02-12
浏览1480
wangyaxwangyax软件开发工程师金融机构
回复 1# ysgift     DB2的代价模型自己会进行判断,如果某个谓词筛选因子较大的话或者可能直接通过表扫描效率更高,就不会走索引。显示全部
回复 1# ysgift


    DB2的代价模型自己会进行判断,如果某个谓词筛选因子较大的话或者可能直接通过表扫描效率更高,就不会走索引。收起
互联网服务 · 2014-02-07
浏览1444

提问者

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

相关问题

问题状态

  • 发布时间:2014-02-05
  • 关注会员:1 人
  • 问题浏览:4862
  • 最近回答:2014-02-18
  • X社区推广