· 6 years ago · Jun 15, 2019, 03:42 AM
1create table if not exists orders
2(
3 id bigserial not null constraint orders_pkey primary key,
4 partner_id integer,
5 order_id varchar,
6 date_created date,
7 state_code integer,
8 state_date timestamp,
9 recipient varchar,
10 phone varchar,
11);
12
13create index if not exists orders_partner_id_index on orders (partner_id);
14create index if not exists orders_order_id_index on orders (order_id);
15create index if not exists orders_partner_id_date_created_index on orders (partner_id, date_created);
16
17select order_id, date_created, recipient, phone, state_code, state_date
18from orders
19where partner_id=1 and date_created between '2019-04-01' and '2019-04-30'
20order by order_id asc limit 10 offset 0;
21
22QUERY PLAN
23"Limit (cost=19495.48..38990.41 rows=10 width=91)"
24" -> Index Scan using orders_order_id_index on orders (cost=0.56..**41186925.66** rows=21127 width=91)"
25" Filter: ((date_created >= '2019-04-01'::date) AND (date_created <= '2019-04-30'::date) AND (partner_id = 1))"
26
27select order_id, date_created, recipient, phone, state_code, state_date
28from orders
29where partner_id=1 and date_created between '2019-04-01' and '2019-04-30'
30order by order_id asc limit 10 offset 40;
31
32QUERY PLAN
33"Limit (cost=81449.76..81449.79 rows=10 width=91)"
34" -> Sort (cost=81449.66..81502.48 rows=21127 width=91)"
35" Sort Key: order_id"
36" -> Bitmap Heap Scan on orders (cost=4241.93..80747.84 rows=21127 width=91)"
37" Recheck Cond: ((partner_id = 1) AND (date_created >= '2019-04-01'::date) AND (date_created <= '2019-04-30'::date))"
38" -> Bitmap Index Scan on orders_partner_id_date_created_index (cost=0.00..4236.65 rows=21127 width=0)"
39" Index Cond: ((partner_id = 1) AND (date_created >= '2019-04-01'::date) AND (date_created <= '2019-04-30'::date))"