当前位置: 代码迷 >> Informix >> informix 在字段建有目录,但是执行计划却不使用
  详细解决方案

informix 在字段建有目录,但是执行计划却不使用

热度:3951   发布时间:2013-02-26 00:00:00.0
informix 在字段建有索引,但是执行计划却不使用。
大家好,我下面两个表中,建立索引,可是informix执行计划却不使用,而是去顺序扫描。
帮忙看看是是怎么一回事,如何解决。谢谢!
1、service 在字段groupid建有索引,但是下面的查询语句却没有使用索引,而是顺序扫描。 
Index_name         Owner    Type/Clstr Access_Method      Columns
 
 163_328           ipc      unique/No  btree              groupid
 
QUERY:
------
SELECT groupcallfunc,sysblackfunc,limittype
from service
where groupid=2

Estimated Cost: 1
Estimated # of Rows Returned: 1
  1) service: SEQUENTIAL SCAN
        Filters: service.groupid = 2 

2、User表有联合索引(GroupNumber,DIDPNP),执行计划却把查询条件的顺序掉换了,不使用索引
QUERY:
------
SELECT DIDNumber ,DIDPNP ,DIDPNP 
from User
WHERE  GroupNumber='1211' AND DIDPNP ='0103121211'

Estimated Cost: 1
Estimated # of Rows Returned: 1
  1) user: SEQUENTIAL SCAN
        Filters: (user.didpnp = '0103121211' AND user.groupnumber = '1211' ) 
 

------解决方案--------------------------------------------------------
字段是什么类型的?
------解决方案--------------------------------------------------------
显示一下你创建索引的语句。
------解决方案--------------------------------------------------------
Estimated Cost很低。不知道为什么有 SEQUENTIAL SCAN

------解决方案--------------------------------------------------------
因为数据少,优化器判断执行索引的cost比顺序扫描的大,所以执行了顺序扫描,很多情况下数据量小的表没有必要建索引
------解决方案--------------------------------------------------------
groupnumber varchar,
该成char试试
------解决方案--------------------------------------------------------
这个么,想不通,可能有别的配置/版本不同。
我休息了。
  相关解决方案