总之,至少在PostgreSQL中,选择所有带*和不带*的列的性能几乎是一样的。
在PostgreSQL中,我创建了包含10个id_x列和1000万行的测试表,如下所示:
CREATE TABLE test AS SELECT generate_series(1, 10000000) AS id_1,
generate_series(1, 10000000) AS id_2,
generate_series(1, 10000000) AS id_3,
generate_series(1, 10000000) AS id_4,
generate_series(1, 10000000) AS id_5,
generate_series(1, 10000000) AS id_6,
generate_series(1, 10000000) AS id_7,
generate_series(1, 10000000) AS id_8,
generate_series(1, 10000000) AS id_9,
generate_series(1, 10000000) AS id_10;
然后,我交替运行以下2个查询共20次。*每个查询总共运行10次:
SELECT * FROM test:
SELECT id_1, id_2, id_3, id_4, id_5, id_6, id_7, id_8, id_9, id_10 FROM test;
结果> <
|
Select all columns with * |
Select all columns without * |
1st run |
12.792 seconds |
12.483 seconds |
2nd run |
12.803 seconds |
12.608 seconds |
3rd run |
12.537 seconds |
12.549 seconds |
4th run |
12.512 seconds |
12.457 seconds |
5th run |
12.570 seconds |
12.487 seconds |
6th run |
12.508 seconds |
12.493 seconds |
7th run |
12.432 seconds |
12.475 seconds |
8th run |
12.532 seconds |
12.489 seconds |
9th run |
12.532 seconds |
12.452 seconds |
10th run |
12.437 seconds |
12.477 seconds |
Average |
12.565 seconds |
12.497 seconds |
选择所有列的平均值:
*是12.565秒。
没有*是12.497秒。