PostgreSQL查詢表中是否存在值的優化

2022-04-04 07:27:05 字數 1143 閱讀 6819

postgresql查詢表中是否存在值的優化

經常會碰到這麼乙個應用:往表裡更新資料前先查詢一遍被更新的資料存不存在。通常我們的做法是使用select 查詢過濾一遍,然後再決定是否更新,怎麼更新。

在pg庫里,除了以上方法外,還有一種更能提公升效能的辦法,使用perform來代替select。

example:

create or replace function test.insert_exist_test(i_id int,i_info text) 

returns void   www.2cto.com  

as$body$

--author: kenyon 

--created:2012_03_05

--purpose:test insert into a table if exists

declare 

begin

perform 1  from test.exists_test where id = i_id;

if not found then 

insert into test.exists_test(id,info) values (i_id,i_info);

return;

else

update test.exists_test set info=i_info where id=i_id;

return;

end if;

exception when others then

raise exception 'insert exists_test(id,info) values(%,%) error.',i_id,i_info;

return;  www.2cto.com  

end;

$body$ 

language plpgsql;

使用:select test.insert_exist_test(1,'kevin');

select test.insert_exist_test(2,'brucelee');

select test.insert_exist_test(3,'jacky');

select test.insert_exist_test(1,'kenyon');  

作者 kenyon

postgresql查詢表的大小

資料庫中單個表的大小 不包含索引 select pg size pretty pg relation size 表名 查出所有表 包含索引 並排序 select table schema table name as table full name,pg size pretty pg total re...

postgresql 中的表空間

表空間 概念 表空間是postgresql在磁碟上的乙個位置,postgresql在其中儲存包含資料庫物件 例如索引和表 的資料檔案。postgresql使用表空間將邏輯名對映到磁碟上的物理位置。預設表空間 postgresql帶有兩個預設表空間 pg default tablespace儲存所有使...

postgresql分頁查詢

資料庫中存了3000w條資料,兩種分頁查詢測試時間 第一種select from test table where i id 1000 limit 100 time 0.016s 第二種select from test table limit 100 offset 1000 time 0.003s ...