在oracle中使用索引

时间:2009-11-20 11:57:03

标签: oracle indexing

如何在oracle的select查询中使用索引?创建索引时可以提高性能吗?

如何明确使用索引?

3 个答案:

答案 0 :(得分:4)

您无需在选择查询中使用索引 - Oracle将决定哪个索引(如果有)最有助于执行查询。索引通过为所需数据提供快捷方式来帮助某些查询(而不是所有查询)的性能。您应该阅读Oracle Concepts Guide 中的索引 - 阅读“索引概述”一节。

答案 1 :(得分:3)

如果oracle出现了糟糕的执行计划,你真的必须告诉它使用哪个索引(很少发生,但它会发生),你可以使用优化器提示:

SELECT /*+ INDEX(mytable myindex) */ foobar from mytable

但这应该是你最后的选择。在你尝试这样做之前,请使用

execute dbms_stats.gather_table_stats('myschema','mytable')

告诉Oracle分析表;希望它会找出何时使用索引。

答案 2 :(得分:2)

通常,您无需在查询中说任何内容即可使用索引。 Oracle的计划评估程序将挑选(希望)为您执行该查询的最佳方法。这是Codd关系数据库的原则之一。

创建索引时可以提高性能吗?

几种情况。其中一些:

  1. 当您尝试搜索条件时(例如:select * from foo where field = 121,如果您的表格很大并且您在字段上有索引,则会有所帮助)
  2. 当您想要对结果进行排序时。 (即:select * from foo order by field,如果您的牌桌很大并且您有字段的索引,这会有所帮助)
  3. 执行联接时