【问题标题】:Index on a table without a where clause没有 where 子句的表上的索引
【发布时间】:2013-11-13 03:04:32
【问题描述】:

我正在尝试从具有数百万行的表中选择特定列的不同列表,例如:

select distinct stylecode from bass.stock_snapshot

这个查询显然需要很长时间。我可以在这张桌子上做哪些性能调整? 如果我的查询没有谓词,索引会有帮助吗?

【问题讨论】:

  • 样式代码上的索引应该可供不同的人使用。
  • 谢谢 - 刚刚在测试表上做了这个,解释计划显示它确实使用了索引。谢谢!
  • 希望它很快 [足够] :)
  • 将列设置为非空也可以确保最佳性能(在添加索引的情况下)

标签: performance oracle indexing


【解决方案1】:

" 只是在测试表上执行此操作,解释计划显示它确实使用了 索引。”

请记住,您必须永远维护该索引。我不了解您的数据,但该索引似乎不太可能对其他查询有用,而且该查询似乎不像您应该经常运行的那种查询。

如果这是一次性的,其他一些方法(例如并行查询)可能会更好。

另一方面,如果这是一个频繁的需求,也许 STYLECODE 的参考表会是一个好主意。

【讨论】:

  • 感谢您的关注。这是我正在编写 ETL 提取的遗留系统,因此持续维护不是问题。
  • “可能是 STYLECODE 的参考表”,您的意思是“向数据库添加外键”- 异端! :-)。
猜你喜欢
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 2020-10-09
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
相关资源
最近更新 更多