(示例数据库:9.3.5)web
test=# insert into tbl_time1 select generate_series(1,100000000),clock_timestamp(),now();
INSERT 0 100000000
Time: 525833.218 ms
约:8.7分钟数据库
test=# select count(1) from tbl_time1;
count
-----------
100000000
(1 row)
Time: 3070658.058 ms
约:51.2分钟oop
test=# alter table tbl_time1 add primary key (id);
ALTER TABLE
Time: 981276.804 ms
约:16.4分钟测试
这个有 where id > 0
test=# select count(id) from tbl_time1 where id > 0;
count
-----------
100000000
(1 row)
Time: 244243.112 ms
约:4.071分钟spa
这个无 where id > 0
test=# select count(id) from tbl_time1;
count
-----------
100000000
(1 row)
Time: 548650.606 ms
约:9.144分钟.net
enable_bitmapscan = off
enable_hashagg = on
enable_hashjoin = on
enable_indexscan = on
enable_indexonlyscan = on#惟一索引扫描
#enable_material = on
#enable_mergejoin = on
#enable_nestloop = on
enable_seqscan = off
#enable_sort = on
enable_tidscan = ofform
test=# select count(id) from tbl_time1 where id > 0;
count
-----------
100000000
(1 row)
Time: 87501.151 ms
约:1.456分钟索引
问题:内存
1.count都会扫全表很慢的 ?count 超过几十万 都是扫全表的? 修改配置文件,是 Index Only Scan的 enable_indexonlyscan = on 优先get
2.没办法查询控制在秒级吗? 测试测试机是普通PC的,之前的AMD4核,8G内存,7200转 的硬盘。不过,相信再调优下内存,我以为应该是能够的。