- 論壇徽章:
- 3
|
在每個表的大規(guī)模更新后,加上analyze <tablename>;語句。因?yàn)槊看胃潞篑R上執(zhí)行查詢,統(tǒng)計(jì)信息還沒有收集上來,會導(dǎo)致差的執(zhí)行計(jì)劃,所以要手工執(zhí)行analyze <tablename>收集統(tǒng)計(jì)信息,保證后續(xù)的SQL的執(zhí)行計(jì)劃正確。而你分開執(zhí)行快的原因是你等了一會兒,數(shù)據(jù)庫自動幫你收集了統(tǒng)計(jì)信息的原因。我加上analyze <tablename>語句后,在我的筆記本上1分54秒就可以運(yùn)行出來了:
osdba-mac:pgtest osdba$ time psql u01 -f 升星.sql > my2.log
real 1m54.936s
user 0m0.235s
sys 0m0.015s
加analyze的示例如下:
....
insert into equipment.player_equip_star_value(career, lv, god_type, star)
select a.career, a.lv, a.god_type, b.star
from
player.sum_up_player_basic a,
config.basic_star_open b
order by a.career, a.lv, a.god_type, b.star
;
create index on equipment.player_equip_star_value(career);
create index on equipment.player_equip_star_value(lv);
create index on equipment.player_equip_star_value(god_type);
create index on equipment.player_equip_star_value(star);
create index on equipment.player_equip_star_value(career, lv, star);
analyze equipment.player_equip_star_value;
.... |
|