eastsea 发表于 2003-02-24 11:20

informix索引问题

我在informix的dbaccess 下执行语句
set explain on;
select * from insur_info
where pol_code = 'B'
时发现执行速度特别慢,后来察看以下out文件为
QUERY:
------
select * from insur_info
where pol_code = 'B'

Estimated Cost: 4
Estimated # of Rows Returned: 10

1) bill.insur_info: SEQUENTIAL SCAN

    Filters: bill.insur_info.pol_code = 'B'

检索数据库时采用顺序检索,但是我对pol_code 字段建立了索引,
想向高手们请教为什么查询时不通过索引,怎样才能通过索引查询,
是不是我建的索引太多(有10个)

shisen 发表于 2003-02-24 11:56

informix索引问题

请问是怎样的索引,能不能将创建索引的语句列出?
如果是组合索引,并且字段不是第一个,是不会按照它检索的。

eastsea 发表于 2003-02-24 14:33

informix索引问题

pol_code 的单一索引
创建语句如下
create index ix_pol_code on insur_info(pol_code)

wolfop 发表于 2003-02-24 20:46

informix索引问题

原帖由 "eastsea" 发表:
我在informix的dbaccess 下执行语句
set explain on;
select * from insur_info
where pol_code = 'B'
时发现执行速度特别慢,后来察看以下out文件为
QUERY:
------
select * from insur_info
where pol_co..........
你的pol_code可能的取值有几个?不多的话,IDS支持的B-TREE索引基本难以起作用,建议通过表分区实现优化。

大梦 发表于 2003-02-25 00:06

informix索引问题

哈哈!
中国人寿的兄弟到这来求救了!

lk72 发表于 2003-07-15 11:55

informix索引问题

哈哈!
中国人寿的兄弟到这来求救了!

----何以见得?用informix的行业多了去。

likuifu 发表于 2009-12-25 00:49

1、首先需要确认是否已经统计更新,可以比较systables 表和sysmaster:sysptnhdr表中nrows差异;
2、统计更新完毕后确认pol_code是否为组合索引,如果是组合索引,有没有再第一个位置;
3、如果索引还是没走到,想要抛开数据库自己的查询优化器使用指定的查询方式,可以SELECT --+ORDERED * FROM tab的方式实现。

估计你还是索引建乱了,导致优化器都没找到合适的查询方式,建议重新规划索引。
页: [1]
查看完整版本: informix索引问题