postgresql大數據查詢加索引和不加索引耗時總結


1、創建測試表

CREATE TABLE big_data
(
  id character varying(50) NOT NULL,
  name character varying(50),
  datetime timestamp with time zone,
  CONSTRAINT big_data_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE big_data
  OWNER TO postgres;

2、創建插入數據函數

CREATE OR REPLACE FUNCTION insert_bigdata()
  RETURNS text AS
$BODY$
declare ii integer;
declare jj integer;
begin

    ii = 1;
    jj = 1;
    FOR ii IN 1..10 LOOP
        FOR jj IN 1..10000 LOOP
            INSERT INTO big_data values(uuid_generate_v4(), 'lisi'||jj, now());
        END LOOP;
    END LOOP;
    RETURN 'success';
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION insert_bigdata()
  OWNER TO postgres; 

3、插入一千萬條數據(修改函數中的循環次數,多執行幾次,插入需要的數據)

select insert_bigdata();

4、給name字段不加索引和加索引分別統計執行時間

查詢結果10條記錄

select * from big_data where name='lisi10';

查詢結果100條記錄
select * from big_data where name='lisi100';

查詢結果1000條記錄
select * from big_data where name='lisi1000';

查詢結果10000條記錄
select * from big_data where name='lisi10000';

查詢結果100000條記錄
select * from big_data where name='lisi100000';

耗時統計表(單位/毫秒)

 

耗時統計圖

 

5、結果總結

在查詢結果小於1000條記錄時,加索引會大幅度提高查詢效率。

在查詢結果大於1000條記錄時,加索引對查詢效率的提升逐漸減小,尤其是超過10000條時,使用索引后的查詢時間也比較長。

當前結果僅適用於創建的big_data這張數據表(如果數據表中字段比較多,數據量比較大,會在更小的查詢結果記錄數出現加索引查詢效率提升不明顯的問題)。
————————————————
版權聲明:本文為CSDN博主「朔語」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/shuoyu816/article/details/82793968


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM