postgresql 9.6 建立多列索引测试
admin
2023-06-01 23:02:35
0

建立测试表结构

CREATE TABLE t_test

(

    id integer,

    name text COLLATE pg_catalog."default",

    address character varying(500) COLLATE pg_catalog."default"

);


插入测试数据

insert into t_test SELECT generate_series(1,10000000) as key, 'name'||(random()*(10^3))::integer, 'ChangAn Street NO'||(random()*(10^3))::integer;


建立3列索引

create index idx_t_test_id_name_address on t_test(id,name,address);


1.以下查询语句可以使用索引且较快

索引第一列在where语句,与条件次序无关

一般3毫秒多出结果

explain analyze select * from t_test where id < 2000 and name like 'name%' and address like 'ChangAn%';

explain analyze select * from t_test where address like 'ChangAn%' and name like 'name%' and id < 2000 ;

explain analyze select * from t_test where name like 'name%' and id < 2000 and address like 'ChangAn%'  ;

explain analyze select * from t_test where id < 2000

explain analyze select * from t_test where  name like 'name%' and id < 2000 

explain analyze select * from t_test where  address like 'ChangAn%' and id < 2000 ;

explain analyze select * from t_test where address like 'ChangAn%' and name like 'name%' and id < 2000 ;


2.以下可以使用索引,但是查询速度较慢

索引第一列在order by 

explain analyze select * from t_test where address like 'ChangAn%' and name like 'name%' order by id;

17S

explain analyze select * from t_test where address like 'ChangAn%' order by id;

8s

explain analyze select * from t_test where name like 'name%' order by id;

9s


以下语句无法使用索引,索引第一列不在 where 或者 order by


explain analyze select * from t_test where address like 'ChangAn%' and name like 'name%';

explain analyze select * from t_test where address like 'ChangAn%';

explain analyze select * from t_test where name like 'name%';


建立双列索引

create index idx_t_test_name_address on t_test(name,address);

以下语句会使用索引

explain analyze select * from t_test where name = 'name580';

explain analyze select * from t_test where address like 'ChangAn%' and name like 'name580'; 

explain analyze select * from t_test where address like 'ChangAn%' and name = 'name580';


下面语句不会使用索引


explain analyze select * from t_test where name  like 'name%'

explain analyze select * from t_test where address like 'ChangAn%'

explain analyze select * from t_test where address = 'ChangAn Street NO416'


相关内容

热门资讯

“自民党对华交流停滞,高市早苗... 8月7日,日本共同社报道称,自日本首相高市早苗去年11月发表涉台错误言论导致日中关系恶化以来,自民党...
银行试点午休1.5小时遭网友吐... 近日,中国建设银行恩施分行发布的一则网点试行午休的公告引发网友热议。第一财经报道,根据通知内容,自8...
电视机背光灯带改造方法 电视机的背光灯带是其最重要的组成部分之一,它能够提供良好的光照条件,让我们在观看电视时视觉更加舒适。...
电视机高压背光故障 电视机高压背光是电视机显示中的关键部分之一,是让电视机显示清晰、亮度充足的重要组成部分。然而,在实际...
电视机背光板闪烁怎么解决 背光板是电视机中一种重要的组件,一旦出现问题,可能会引起电视机的闪烁。电视机背光板闪烁的原因可能有很...
电视机背光灯不通电怎么办 当电视机背光灯不通电时,可能会导致屏幕昏暗或完全黑屏。通常情况下,这种情况可能由以下原因造成: 1...
电视机背光亮不亮怎么办 电视机背光是指电视机内部的一组照明灯,主要用来照亮电视屏幕,使得图像更加清晰。如果电视机背光亮不亮,...
上新“智习室” 学习更“丝滑” 在午休、课后等时间段,学生可以在学校做什么?除了在操场上的自由运动、参加兴趣社团等各类活动外,北京市...
AMD出手收购Taalas:解... 快科技8月7日消息,AMD正式宣布收购AI芯片初创公司Taalas,进一步强化其在AI推理领域的战略...
泵车压力表直销厂家的应用场景与... 导语 泵车压力表是混凝土泵车液压系统中的常见监测部件,用于反映泵送系统的工作压力状态。在实际应用中,...