udb添加索引时报错
报错如下:
ERROR: index row size 2728 exceeds btree version4 maximun2704 for index "idx_app"
DETAIL: Index row references tuple(508199,31) in relation 'unify_work_extend_value'.
HINT: Values larger than 1/3 of a buffer page cannot be indexed.
Consider a function index of an MD5 hash of the value,or use full text indexing.
首先看一下SQL和表结构:
explain
SELECT COUNT
( 1 ) AS totalCount,
SUM ( CASE WHEN wo.order_status IN ( '0', '1' ) THEN 1 ELSE 0 END ) AS waitAllocateCount,
SUM ( CASE WHEN wo.order_status IN ( '2', '3' ) THEN 1 ELSE 0 END ) AS processingCount,
SUM ( CASE WHEN wo.order_status IN ( '4', '5', '7' ) THEN 1 ELSE 0 END ) AS waitAuditCount,
SUM ( CASE WHEN wo.order_status IN ( '8', '9' ) THEN 1 ELSE 0 END ) AS finishCount,
COALESCE ( SUM ( CASE WHEN wo.property_value :: INTEGER > 0 THEN 1 ELSE 0 END ), 0 ) AS superviseCount,
'0' AS expiredCount
FROM
(
WITH work_order AS (
SELECT
wo_code,
order_status
FROM
unify_work_order
WHERE
app_id = 'wghxtjs'
AND state_time >= to_timestamp( '2023-10-01', 'YYYY-MM-DD HH24:MI:SS' )
AND state_time <= to_timestamp( '2023-11-01', 'YYYY-MM-DD HH24:MI:SS' )
AND del_flag = '0'
) SELECT
tmp.order_status,
dbcs.property_value
FROM
work_order tmp
LEFT JOIN ( SELECT wo_code, property_value FROM unify_work_extend_value WHERE app_id = 'wghxtjs' AND property_code = 'DuBanCiShu' ) dbcs ON tmp.wo_code = dbcs.wo_code
) wo
添加app_id property_code wo_code property_value) / length(所有入参字节总和) > 1/3
则认为组合索引长度太大,就数据库就放弃检索组合索引。
解决办法,参看:
Consider a function index of an MD5 hash of the value, or use full text indexing.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示