Skip to content

Commit 256f3a9

Browse files
committed
improve
1 parent 2ecf0ea commit 256f3a9

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

201709/20170927_03.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ create table train_order (
8080
);
8181
8282
-- 索引,提高按坐席查询的效率
83-
create index idx_train_order_1 on train_order (train_id, box_id);
83+
create index idx_train_order_1 on train_order (train_id, box_id, site_id);
8484
```
8585

8686
冗余一份数据,按用户哈希分区,提高按用户查询的效率。
@@ -201,30 +201,28 @@ Time: 0.367 ms
201201
7、schemaless设计来了,按坐席和乘车日期查询,平均返回10条记录。
202202

203203
```
204-
create or replace function get_site_order(v_get_on date, v_train_id int, v_box_id int2) returns setof train_order as $$
204+
create or replace function get_site_order(v_get_on date, v_train_id int, v_box_id int2, v_site_id int2) returns setof train_order as $$
205205
declare
206206
tbl name := 'train_order_'||to_char(v_get_on,'yyyymmdd');
207207
begin
208-
return query execute format('select * from %I where train_id=%L and box_id=%L', tbl, v_train_id, v_box_id);
208+
return query execute format('select * from %I where train_id=%L and box_id=%L and site_id=%L', tbl, v_train_id, v_box_id, v_site_id);
209209
end;
210210
$$ language plpgsql strict;
211211
```
212212

213213
```
214-
postgres=# select (get_site_order('2017-10-09', 1999, 3::int2)).* ;
215-
id | train_id | box_id | site_id | station_1 | station_2 | get_on | uid | pay_stat | charge | weight | window_id | crt_time | mod_time
216-
------------+----------+--------+---------+-----------+-----------+------------+-----------+----------+------------------+--------+-----------+----------------------------+----------
217-
2402454347 | 1999 | 3 | 108 | 58 | 19 | 2017-10-09 | 933443835 | 1 | 1908.97158834804 | 1 | 1 | 2017-09-27 21:15:26.796659 |
218-
2399727138 | 1999 | 3 | 172 | 87 | 32 | 2017-10-09 | 77002396 | 1 | 8196.2648357721 | 1 | 1 | 2017-09-27 21:14:52.838442 |
219-
2390398889 | 1999 | 3 | 160 | 40 | 20 | 2017-10-09 | 83057290 | 1 | 7491.21171126422 | 1 | 1 | 2017-09-27 21:13:38.190615 |
220-
2388491328 | 1999 | 3 | 196 | 10 | 51 | 2017-10-09 | 733877428 | 1 | 5778.93740894599 | 1 | 1 | 2017-09-27 21:13:22.721515 |
221-
2383766403 | 1999 | 3 | 97 | 32 | 7 | 2017-10-09 | 542053851 | 1 | 2010.56065606233 | 1 | 1 | 2017-09-27 21:12:44.861967 |
222-
2382764531 | 1999 | 3 | 57 | 65 | 12 | 2017-10-09 | 730620343 | 1 | 9508.43552351324 | 1 | 1 | 2017-09-27 21:12:36.790158 |
223-
2381508614 | 1999 | 3 | 78 | 9 | 76 | 2017-10-09 | 553050023 | 1 | 4190.36140979407 | 1 | 1 | 2017-09-27 21:12:26.79828 |
224-
2380100816 | 1999 | 3 | 6 | 63 | 16 | 2017-10-09 | 295268263 | 1 | 6046.77832423523 | 1 | 1 | 2017-09-27 21:12:15.669973 |
225-
2379584703 | 1999 | 3 | 111 | 65 | 89 | 2017-10-09 | 703032018 | 1 | 2217.88949064212 | 1 | 1 | 2017-09-27 21:12:11.534523 |
226-
2378676040 | 1999 | 3 | 140 | 87 | 42 | 2017-10-09 | 762174690 | 1 | 8776.38305891259 | 1 | 1 | 2017-09-27 21:12:03.98851 |
227-
(10 rows)
214+
postgres=# select (get_site_order('2017-10-09', 1999, 3::int2, 1::int2)).* ;
215+
id | train_id | box_id | site_id | station_1 | station_2 | get_on | uid | pay_stat | charge | weight | window_id | crt_time | mod_time
216+
------------+----------+--------+---------+-----------+-----------+------------+-----------+----------+------------------+--------+-----------+----------------------------+----------
217+
2300300781 | 1999 | 3 | 1 | 68 | 14 | 2017-10-09 | 419271707 | 1 | 7061.5369010889 | 1 | 1 | 2017-09-27 20:54:56.710393 |
218+
2234878940 | 1999 | 3 | 1 | 85 | 45 | 2017-10-09 | 885259649 | 1 | 5214.0475622518 | 1 | 1 | 2017-09-27 20:41:22.906565 |
219+
2107427991 | 1999 | 3 | 1 | 35 | 98 | 2017-10-09 | 985856266 | 1 | 8642.02400384098 | 1 | 1 | 2017-09-27 20:12:33.85781 |
220+
1794488978 | 1999 | 3 | 1 | 94 | 20 | 2017-10-09 | 351055777 | 1 | 1718.21027540183 | 1 | 1 | 2017-09-27 19:06:43.643281 |
221+
1374974043 | 1999 | 3 | 1 | 16 | 26 | 2017-10-09 | 923638283 | 1 | 4711.63916029176 | 1 | 1 | 2017-09-27 17:33:47.147368 |
222+
1351805341 | 1999 | 3 | 1 | 85 | 74 | 2017-10-09 | 212355965 | 1 | 4541.93220470985 | 1 | 1 | 2017-09-27 17:28:20.974681 |
223+
1182159676 | 1999 | 3 | 1 | 15 | 31 | 2017-10-09 | 567906740 | 1 | 8566.17715372145 | 1 | 1 | 2017-09-27 16:54:26.478221 |
224+
35506838 | 1999 | 3 | 1 | 1 | 47 | 2017-10-09 | 884099213 | 1 | 983.503066563047 | 1 | 1 | 2017-09-27 13:55:21.280078 |
225+
(8 rows)
228226
229227
Time: 0.391 ms
230228
```
@@ -333,8 +331,9 @@ script statistics:
333331
vi test2.sql
334332
335333
\set train_id random(0,19999)
334+
\set box_id random(0,19)
336335
\set site_id random(0,199)
337-
select * from get_site_order(current_date+(random()*30)::int, (:train_id)::int, (:site_id)::int2);
336+
select * from get_site_order(current_date+(random()*30)::int, (:train_id)::int, (:box_id)::int2, (:site_id)::int2);
338337
339338
pgbench -M prepared -n -r -P 1 -f ./test2.sql -c 64 -j 64 -T 120
340339
```
@@ -354,8 +353,9 @@ tps = 213763.615290 (excluding connections establishing)
354353
script statistics:
355354
- statement latencies in milliseconds:
356355
0.002 \set train_id random(0,19999)
356+
0.000 \set box_id random(0,19)
357357
0.000 \set site_id random(0,199)
358-
0.302 select * from get_site_order(current_date+(random()*30)::int, (:train_id)::int, (:site_id)::int2);
358+
0.302 select * from get_site_order(current_date+(random()*30)::int, (:train_id)::int, (:box_id)::int2, (:site_id)::int2);
359359
```
360360

361361
## 小结

0 commit comments

Comments
 (0)