下面这条语句在t_hdmap_margin_rid_map中数据比较少的时候 in (...) 可以成功返回,但是数据大的时候直接返回false, 不管是in还是not in都返回false,请问有什么办法可以解决吗?
可做如下优化select new_rid from mid.t_hdmap_margin_rid_map as t_hdmap_margin_rid_map
where new_rid = any(array (select new_rid from mid.t_hdmap_margin_rid_map as t_hdmap_margin_rid_map))详情参考 https://www.datadoghq.com/blog/100x-faster-postgres-performance-by-changing-1-line/
赞0踩0评论0
提交了问题2018-10-19
下面这条语句在t_hdmap_margin_rid_map中数据比较少的时候 in (...) 可以成功返回,但是数据大的时候直接返回false, 不管是in还是not in都返回false,请问有什么办法可以解决吗?
回答了问题2019-07-17
如何区(upsert/insert into on conflict) 是INSERT还是UPDATE?
PG可以通过xmax字段的值是否为0,作为判断依据.但是需要在SQL后面跟上returning xmax,才能返回xmax的值.代码修改为: INSERT INTO name_test (
name_id, name
)
VALUES (%s, %s)
ON CONFLICT(name_id)
DO UPDATE SET name_id=EXCLUDED.name_id,name=EXCLUDED.name
returning xmax;update:
[('1481076451',)]
insert:
[('0',)]最后取值,可做判断.详情参考https://github.com/digoal/blog/blob/master/201810/20181017_01.md