目录
字段为jsonb格式
👇主要是以jsonb格式字段为例说一下如何优化sql,也是自己对于PostgerSql使用不熟练所导致的以下问题。A服务调B服务,B服务返回timeout问题,经排查是sql查询慢所导致的。
--优化前:
select Id,name FROM A表 WHERE ( record :: json #>> '{message,scaleId}' ) :: VARCHAR = '1'
-- 查询时间:0.031ms
--优化后:
select Id,name FROM A表 WHERE record ->'message'->> 'scaleId' = '1'
-- 查询时间:0.007ms
-- 相差约:4.43倍
--record字段数据为:
{
"at":1636715305855,
"message":{
"scaleId":"1",
"projectSid":"33"
},
"actionType":2
}
主要原因是:字段record已经是jsonb格式了,优化前是将record转换为json格式,以目前需求是不需要转换的,我只需要获取record字段中scaleId的value值。