Skip to content

Commit 9e90344

Browse files
committed
alter index test
1 parent 12cafba commit 9e90344

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
create table tmptab (pk integer primary key, sk integer);
2+
3+
-- insert ebnough records to make psotgresql optimizer use indexes
4+
insert into tmptab values (generate_series(1, 10000), generate_series(1, 10000));
5+
6+
vacuum analyze;
7+
8+
-- create normal index
9+
create index idx on tmptab(sk);
10+
11+
-- just normal index search
12+
select * from tmptab where sk = 100;
13+
14+
-- make index partial
15+
alter index idx where pk < 1000;
16+
17+
-- select using exact partial index range
18+
select * from tmptab where sk = 100 and pk < 1000;
19+
explain select * from tmptab where sk = 100 and pk < 1000;
20+
21+
-- select using subset of partial index range
22+
select * from tmptab where sk = 100 and pk < 200;
23+
explain select * from tmptab where sk = 100 and pk < 200;
24+
25+
-- select outside partial index range
26+
select * from tmptab where sk = 100 and pk > 1000;
27+
explain select * from tmptab where sk = 100 and pk > 1000;
28+
29+
-- select without partial index range
30+
select * from tmptab where sk = 100;
31+
explain select * from tmptab where sk = 100;
32+
33+
-- extend partial index range
34+
alter index idx where pk < 10000;
35+
36+
-- select using exact partial index range
37+
select * from tmptab where sk = 1000 and pk < 10000;
38+
explain select * from tmptab where sk = 1000 and pk < 10000;
39+
40+
-- calculating aggregate within exact partial index range
41+
select count(*) from tmptab where sk < 1000 and pk < 10000;
42+
explain select count(*) from tmptab where sk < 1000 and pk < 10000;
43+
44+
-- reducing partial idex predicate
45+
alter index idx where pk < 9000;
46+
47+
-- select using new exact partial index range and key value belonging to old range
48+
select * from tmptab where sk = 9000 and pk < 9000;
49+
explain select * from tmptab where sk = 9000 and pk < 9000;
50+
51+
-- select using exact partial index range
52+
select * from tmptab where sk = 900 and pk < 9000;
53+
explain select * from tmptab where sk = 900 and pk < 9000;
54+
55+
drop table tmptab;

0 commit comments

Comments
 (0)