对 postgresql 进行 1 个查询还是多次查询更好?

Is it better to make 1 query or many queries to postgresql?

我得到了 DB class 来处理所有这些游标、连接等。我得到了 3 种方法:

return_all_records: (SELECT * FROM TABLE)

count_of_records: (SELECT COUNT(*) FROM TABLE)

和return_record_by_pk: (SELECT * FROM TABLE WHERE pk=?)

我应该获取每一行并对数据进行操作。对数据库进行 1 个大查询还是对多个小查询进行更好?

PS。我在数据库中有很多记录。好像 10^8。 真的不容易收到一次

for record in DB.return_all_records(): # 1 big query
     #code

for pk in range(DB.count_of_records()):
    DB.return_record_by_pk(pk) #small queries

这在很大程度上取决于底层数据库驱动程序如何处理。您 should/can 考虑使用 SQL 上的 where 条件限制返回的行数,而不是一次获取所有记录,以指定您 "start row" 和 "end row" .然后你可以滑动例如一次 2000 行数据。请确保使用 order by 对数据进行排序,否则返回的数据 will/can 会有所不同。根据您使用的数据库,"limit" 具有不同的语法(例如,Oracle 中的 rownum,使用 MySQL 时 limitoffset 的组合,. ..).根据您用于排序的列(以及它是否已编入索引),排序会对执行时间产生巨大影响,并且从 table 的中间或末尾获取 "windows" 可能会慢