【发布时间】:2014-12-12 17:27:46
【问题描述】:
我有一个表,我们将在其中每分钟插入 1000 条记录并更新相同的记录,以根据 2 列在下一分钟更改状态。我计划在 2 列上创建单独的索引。是否建议在两列上创建一个索引或在两列上创建单独的索引。我们将经常在这两个列上进行选择。
【问题讨论】:
我有一个表,我们将在其中每分钟插入 1000 条记录并更新相同的记录,以根据 2 列在下一分钟更改状态。我计划在 2 列上创建单独的索引。是否建议在两列上创建一个索引或在两列上创建单独的索引。我们将经常在这两个列上进行选择。
【问题讨论】:
如果您正在编写表单查询
SELECT <<something>>
FROM table_name
WHERE column_1 = <<x>>
AND column_2 = <<y>>
在 OLTP 系统中,您几乎肯定需要在 column_1, column_2 上建立一个复合索引。 OLTP 类型的查询通常无法在单个查询中对单个表使用多个 b 树索引。这样做需要进行(相对低效的)b-tree 到位图的转换,这不是优化器经常选择的。
【讨论】:
column_1 和column_2 上的谓词来查找要更新的行,那么您真的希望复合索引能够查找行) 更新效率高。