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