Skip to content

Commit e70501d

Browse files
knizhnikkelvich
authored andcommitted
alter index test
1 parent f17369b commit e70501d

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy