【问题标题】:What are the tradeoffs of reusing a cursor vs. creating a new cursor?重用游标与创建新游标的权衡是什么?
【发布时间】:2011-01-03 08:39:49
【问题描述】:

在 cx_Oracle(或一般的 Oracle)中,是否可以为每个查询分配一个游标,或者跨多个查询重用一个游标。

def getSomeData(curs):         # case 1: pass in a cursor, which is generally
    curs.execute('select ...') #         reused across queries
    return curs.fetchall()

def getSomeData(conn):         # case 2: pass in a connection,allocate
    curs=conn.cursor()         #         a cursor for this query
    curs.execute('select ...')
    return curs.fetchall()

当然,两种方法都返回相同的数据。

这两种方法之间的权衡是什么?一种效率更高还是更低?在多个查询中重用游标是否有任何潜在的缺陷?

【问题讨论】:

    标签: python sql database oracle cx-oracle


    【解决方案1】:

    您可以随意重复使用 cx_Oracle 游标,没问题。如果您在很短的时间内执行数千个小查询,您可能会看到通过重新使用游标稍微提高性能,但我对此表示怀疑。

    我有时会创建新游标,有时会重新使用现有游标,这取决于它是否使代码更易于阅读和理解。

    例如,如果我有各种需要访问数据库的过程,我可能会传递一个 Oracle 连接对象,或者在该连接上创建一个游标。

    凡是让您的代码更易读和更易于维护的就是我所追求的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-22
      • 2019-08-12
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 2012-09-08
      • 2011-05-12
      • 1970-01-01
      相关资源
      最近更新 更多