sql - 甲骨文。重命名名为“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: 这里只允许简单的列名
创建一个新表并在那里移动数据需要太多时间,最终会因“无法扩展表空间”错误而失败。
有人可以建议其他方法吗?
提前致谢。
解决方案
另一种解决方法:
- 创建一个名为的新列
search_count
- 将那里的所有值更新为
count
字段的值 - 使用该列指定索引
- 删除前一个索引和原始列
在这种情况下,Oracle 将使用新创建的索引。
推荐阅读
- python - 将 kivy/python 代码导出到 android 并且图片不会显示在手机上
- pyinstaller - 应用程序关闭后 Pyinstaller 无法执行脚本
- c# - 为 URL 超链接注册新应用程序 - Windows
- azure-devops - 为什么参数在 Azure yml 模板文件中不起作用
- python - 使用 Pandas 按多列分组
- r - 根据 R 中先前的观察重建客户历史记录
- c# - C# 使用 for 循环而不是 foreach 从 List<> 访问对象的元素
- reactjs - 分页和反应引导
- c - C 代码的 ARM 内联汇编未执行
- javascript - 如何使用 webdriverio 点击 reCAPTCHA