首页 > 解决方案 > 甲骨文。重命名名为“count”的列

问题描述

我遇到了一些遗留代码的问题。我有一个包含几亿条记录的日志表。即使认为它有索引,对该表的查询也需要很长时间。我将这个问题深入到名为“count”的列。似乎因为这个名字,Oracle 不使用索引数据并使用全表扫描。所以我试图重命名该列,但它失败了。我试过了:

ALTER TABLE t RENAME COLUMN count TO search_count; ORA-00900: 无效的 SQL 语句

ALTER TABLE t RENAME COLUMN "count" TO "search_count"; ORA-00904: "count": 无效标识符(与任何其他引号相同)

ALTER TABLE t RENAME COLUMN t.count TO t.search_count; ORA-01748: 这里只允许简单的列名

创建一个新表并在那里移动数据需要太多时间,最终会因“无法扩展表空间”错误而失败。

有人可以建议其他方法吗?

提前致谢。

标签: sqloracle

解决方案


另一种解决方法:

  • 创建一个名为的新列search_count
  • 将那里的所有值更新为count字段的值
  • 使用该列指定索引
  • 删除前一个索引和原始列

在这种情况下,Oracle 将使用新创建的索引。


推荐阅读