注册

SQL语句没走索引

JHSONN 2023/04/17 988 6

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:执行以下DDL语句
CREATE TABLE INDICATOR_PROD.SY_PERSON_LIST (
"c0001" VARCHAR(100),
"c0002" VARCHAR(300),
"c0003" VARCHAR(100),
"c0004" INT,
"c0005" VARCHAR(100),
"c0006" VARCHAR(100),
"c0007" INT,
"c0008" VARCHAR(100),
"c0009" INT,
"c0010" INT,
"c0011" INT,
"c0012" VARCHAR(300),
"c0013" VARCHAR(100),
"c0014" VARCHAR(300),
"c0015" VARCHAR(100),
"c0016" VARCHAR(100),
"c0017" VARCHAR(100),
"c0018" VARCHAR(100),
"c0019" VARCHAR(100),
"c0020" VARCHAR(100),
"c0021" VARCHAR(100),
"c0022" VARCHAR(100),
"c0023" VARCHAR(100),
"c0024" VARCHAR(100),
"c0025" VARCHAR(100),
"c0026" VARCHAR(300),
"c0027" VARCHAR(100),
"c0028" VARCHAR(10),
"c0029" VARCHAR(100),
"c0030" INT,
"c0031" VARCHAR(100),
"c0032" INT
);
CREATE INDEX IDX_SY_PERSON_LIST_C0001 ON INDICATOR_PROD.SY_PERSON_LIST ("c0001");
CREATE INDEX IDX_SY_PERSON_LIST_C0017 ON INDICATOR_PROD.SY_PERSON_LIST ("c0017");
CREATE INDEX IDX_SY_PERSON_LIST_C0018 ON INDICATOR_PROD.SY_PERSON_LIST ("c0018");
CREATE INDEX IDX_SY_PERSON_LIST_C0019 ON INDICATOR_PROD.SY_PERSON_LIST ("c0019");
CREATE INDEX IDX_SY_PERSON_LIST_C0020 ON INDICATOR_PROD.SY_PERSON_LIST ("c0020");
CREATE INDEX IDX_SY_PERSON_LIST_C0021 ON INDICATOR_PROD.SY_PERSON_LIST ("c0021");
CREATE INDEX IDX_SY_PERSON_LIST_C0028 ON INDICATOR_PROD.SY_PERSON_LIST ("c0028");
CREATE INDEX IDX_SY_PERSON_LIST_C0029 ON INDICATOR_PROD.SY_PERSON_LIST ("c0029");
CREATE INDEX IDX_SY_PERSON_LIST_C0030 ON INDICATOR_PROD.SY_PERSON_LIST ("c0030");
CREATE INDEX IDX_SY_PERSON_LIST_C0031 ON INDICATOR_PROD.SY_PERSON_LIST ("c0031");
CREATE INDEX IDX_SY_PERSON_LIST_UNION_HJ ON INDICATOR_PROD.SY_PERSON_LIST ("c0028","c0017");
CREATE INDEX IDX_SY_PERSON_LIST_UNION_HJJD ON INDICATOR_PROD.SY_PERSON_LIST ("c0028","c0018");
CREATE INDEX IDX_SY_PERSON_LIST_UNION_HJSQ ON INDICATOR_PROD.SY_PERSON_LIST ("c0028","c0019");
CREATE INDEX IDX_SY_PERSON_LIST_UNION_WG ON INDICATOR_PROD.SY_PERSON_LIST ("c0030","c0017");
CREATE INDEX IDX_SY_PERSON_LIST_UNION_WGJD ON INDICATOR_PROD.SY_PERSON_LIST ("c0030","c0018");
CREATE INDEX IDX_SY_PERSON_LIST_UNION_WGSQ ON INDICATOR_PROD.SY_PERSON_LIST ("c0030","c0019");

该表每天清空并更新所有数据;
执行该SQL语句,走的全表,需要7s
SELECT * FROM INDICATOR_PROD.SY_PERSON_LIST WHERE 1=1 AND c0028 = '2' LIMIT 6;
9c0fb24591072c31675c26f2e9e9ff4.png

同样的语句,在select * 后面加回车换行符,
SELECT *
FROM INDICATOR_PROD.SY_PERSON_LIST WHERE 1=1 AND c0028 = '2' LIMIT 6;
此时只需200ms,即可查询出结果,执行计划与上面的一致。

执行该SQL语句,仍然走的全表,一样需要7s
SELECT
c0001,
c0002,
c0003,
c0004,
c0005,
c0006,
c0007,
c0008,
c0009,
c0010,
c0011,
c0012,
c0013,
c0014,
c0015,
c0016,
c0017,
c0018,
c0019,
c0020,
c0021,
c0022,
c0023,
c0024,
c0025,
c0026,
c0027,
c0028,
c0029,
c0030
FROM INDICATOR_PROD.SY_PERSON_LIST WHERE 1=1 AND c0028 = '2' LIMIT 6;
8e93af39c3e8398b92c9c67f3404541.png

SQL语句加上hint , 也没有走索引,/* + INDEX(INDICATOR_PROD.SY_PERSON_LIST,IDX_SY_PERSON_LIST_C0028) */
该表每天进行truncate 并 重新插入2千万数据 ,这个应该怎么调整索引?

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