cursor.fetchmany vs DECLARE BINARY CURSOR and FETCH



我不确定哪种方法是最有效的,或者每种方法的缺点/优点,或者它们在技术上是否相同?

就是

cursor.execute("DECLARE super_cursor BINARY CURSOR FOR SELECT names FROM myTable")
while True:
cursor.execute("FETCH 1000 FROM super_cursor")
rows = cursor.fetchall()

表示为alecxe给出的答案我可以fetchall() 100万行吗?

相比
while True:
    results = cursor.fetchmany(1000)
    if not results:
        break
    for result in results:
        yield result

应该使用psycopg2中指定的fetchmany或DECLARE BINARY吗?

我已经假设fetchmany和DECLARE BINARY都在数据库服务器端设置了一个临时表…客户端是Apache服务器。

我正在使用的网站对数据库中数据的用户输入进行计算…因此需要加载大量的数据进行模式匹配。

谢谢。

我在我的DB中有1B条记录,DECLARE BINARY CURSOR解决方案可以立即迭代表,而fetchmany有一个非常大的延迟开始工作,我认为这是因为预处理和加载数据到内存。所以在我的例子中,BINARY CURSOR更有效。

最新更新