注册

建立视图后,用主键查询不走索引

Lok4U 2023/11/28 767 22 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】
视图语句:create view view_follow as
(
SELECT t.
,
ROW_NUMBER() OVER ( PARTITION BY idcard, disease, TO_CHAR(TIME, 'YYYYMMDD') ORDER BY center ASC) AS rank
FROM (SELECT t.*, concat(idcard, '-', disease, '-', TO_CHAR(t.time, 'YYYYMMDD')) AS agg_idt
FROM (SELECT af.id,
af.idcard,
af.disease,
af.way,
af.weeks,
af.time,
af.plan_time,
NULL AS next_time,
af.utime,
unix_timestamp(af.utime) * 1000 AS utimestamp,
af.status,
af.cid,
af.ctime,
af.sync_state,
af.sync_time,
af.sync_user_id,
NULL AS org_code,
NULL AS org_name,
0 AS center
FROM ai_follow AS af
UNION ALL
SELECT cfh.id,
cfh.idcard,
1 AS "disease",
cfh.way,
cfh.weeks,
cfh.time,
NULL AS plan_time,
cfh.next_time,
cfh.utime,
cfh.utimestamp,
cfh.status,
NULL AS cid,
NULL AS ctime,
NULL AS sync_state,
NULL AS sync_time,
NULL AS sync_useid,
cfh.org_code,
cfh.org_name,
1 AS center
FROM center_follow_hbp AS cfh
UNION ALL
SELECT cfd.id,
cfd.idcard,
2 AS "disease",
cfd.way,
cfd.weeks,
cfd.time,
NULL AS plan_time,
cfd.next_time,
cfd.utime,
cfd.utimestamp,
cfd.status,
NULL AS cid,
NULL AS ctime,
NULL AS sync_state,
NULL AS sync_time,
NULL AS sync_useid,
cfd.org_code,
cfd.org_name,
1 AS center
FROM center_follow_dm AS cfd) AS t) AS t
);

视图大小:1000万条数据

查询语句:select * from view_follow where id = '****'

执行计划:1701138413984.png

问题:三张表id主键都是有索引的 为什么一个最简单的根据id查耗时2分钟

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