对Postgresql进行1个查询或多次查询是否更好?

时间:2019-09-29 06:58:44

标签: python python-3.x postgresql psycopg2

我有处理所有这些游标,连接等的DB类。我有3种方法:

return_all_records: (SELECT * FROM TABLE)

记录总数: (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

1 个答案:

答案 0 :(得分:1)

这在很大程度上取决于底层数据库驱动程序。您应该/可以考虑限制在SQL上使用where条件返回的行数,以指定您“开始行”和“结束行”,而不是一次获取所有记录。然后,您可以滑动一次处理2000行。请确保使用order by对数据进行排序,否则返回的数据将会/可能会有所不同。取决于您使用的数据库,“限制”具有不同的语法(例如,Oracle中的rownum,使用MySQL时limitoffset的组合,...)。根据您用于排序的列(以及是否为索引建立索引),排序可能会对执行时间产生巨大影响,并且从表的中间或结尾获取“窗口”可能会变慢