【问题标题】:Should I use index on frequently updated table in oracle我应该在 oracle 中经常更新的表上使用索引吗
【发布时间】:2014-12-12 17:27:46
【问题描述】:

我有一个表,我们将在其中每分钟插入 1000 条记录并更新相同的记录,以根据 2 列在下一分钟更改状态。我计划在 2 列上创建单独的索引。是否建议在两列上创建一个索引或在两列上创建单独的索引。我们将经常在这两个列上进行选择。

【问题讨论】:

    标签: sql oracle indexing


    【解决方案1】:

    如果您正在编写表单查询

    SELECT <<something>>
      FROM table_name
     WHERE column_1 = <<x>>
       AND column_2 = <<y>>
    

    在 OLTP 系统中,您几乎肯定需要在 column_1, column_2 上建立一个复合索引。 OLTP 类型的查询通常无法在单个查询中对单个表使用多个 b 树索引。这样做需要进行(相对低效的)b-tree 到位图的转换,这不是优化器经常选择的。

    【讨论】:

    • 这个特定的表更新频繁(每分钟)。可以在这类表上建立索引吗?
    • @user3557442 - 如果更新使用column_1column_2 上的谓词来查找要更新的行,那么您真的希望复合索引能够查找行) 更新效率高。
    猜你喜欢
    • 1970-01-01
    • 2013-11-17
    • 2013-03-20
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    相关资源
    最近更新 更多