注册

先建立聚簇联合索引后再建立单列索引,插入输入后,单列索引在更新统计信息后就不走索引了

天山 2023/11/14 714 7 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM7
【操作系统】:
【CPU】:
【问题描述】*:
CREATE TABLE "SYSDBA"."TEST_JYGL_XNY_JJJY_JSDLQX"
(
"FDDYID" VARCHAR2(50) NOT NULL,
"MONTH" VARCHAR2(50) NOT NULL,
"PDATE" DATE NOT NULL,
"POINT" INTEGER NOT NULL,
"DL" DECIMAL(22,6),
"BASETYPE" VARCHAR2(50),
"CREATEDATE" DATETIME(6) NOT NULL,
"JYTYPE" VARCHAR2(50),
"BIDSIGN" DECIMAL(22,0),
CLUSTER PRIMARY KEY("FDDYID", "PDATE", "POINT", "MONTH", "CREATEDATE")) STORAGE(ON "MAIN", CLUSTERBTR) ;
#先创建空表(包括聚簇联合主键索引)
然后再创建month单列索引,然后点击表点击更新统计信息,
然后插入3条数据,

  1. insert into SYSDBA.TEST_JYGL_XNY_JJJY_JSDLQX (fddyid,month,pdate,point,dl,basetype,createdate,jytype,bidsign) select * from NMJY.T_JYGL_XNY_JJJY_JSDLQX where month='2022-06' limit 100;
  2. insert into SYSDBA.TEST_JYGL_XNY_JJJY_JSDLQX (fddyid,month,pdate,point,dl,basetype,createdate,jytype,bidsign) select * from NMJY.T_JYGL_XNY_JJJY_JSDLQX where month='2022-07' limit 100;
  3. insert into SYSDBA.TEST_JYGL_XNY_JJJY_JSDLQX (fddyid,month,pdate,point,dl,basetype,createdate,jytype,bidsign) select * from NMJY.T_JYGL_XNY_JJJY_JSDLQX where month='2022-08' limit 100;
  4. commit;
    此时立刻执行
    EXPLAIN SELECT * FROM SYSDBA.TEST_JYGL_XNY_JJJY_JSDLQX WHERE MONTH='2022-06' 语句可以走month列的seek,
    但是当再点击更新统计信息后上边的select语句就不再走month列的索引而是CSCN2。空行依然可以走seek。比如EXPLAIN SELECT * FROM SYSDBA.TEST_JYGL_XNY_JJJY_JSDLQX WHERE MONTH='2022-09'(空行)
    请问为什么?

另外一种情形:我创建表后,不更新统计信息,依次执行:
插入数据->创建month单列索引->select * xxx。
此时执行EXPLAIN SELECT * FROM SYSDBA.TEST_JYGL_XNY_JJJY_JSDLQX WHERE fddyid='FFXXX1' and pdate='2022-06-25' 联合聚簇主键索引有效CSEK,但是执行
EXPLAIN SELECT * FROM SYSDBA.TEST_JYGL_XNY_JJJY_JSDLQX WHERE MONTH='2022-10',month列不走索引.
那请问如何让第二个month索引生效?

回答 0
暂无回答
扫一扫
联系客服