oracle 多字段索引和单字段索引

create index INDEX_NAME on TABLE_NAME (ACCNO, ZONENO, CINO)

create index INDEX_NAME on TABLE_NAME (ACCNO)
create index INDEX_NAME on TABLE_NAME (ZONENO)
create index INDEX_NAME on TABLE_NAME (CINO)
的区别。
查询的时候有什么区别?

在oracle中物理结构不一样。

create index INDEX_NAME on TABLE_NAME (ACCNO, ZONENO, CINO)

会根据ACCNO, ZONENO, CINO生成一个BTree索引树。

create index INDEX_NAME on TABLE_NAME (ACCNO)。

create index INDEX_NAME on TABLE_NAME (ZONENO)。

create index INDEX_NAME on TABLE_NAME (CINO)。

会生成3个索引树。如果根据ACCNO, ZONENO, CINO三个字段检索,正常情况下(ACCNO, ZONENO, CINO)会快一些。

如果按照ACCNO中的一个字段检索,下面的情况会快一些。

如果在同时建上面两种情况的检索,也不会报错。只是会在DML,更新插入删除时会慢一些。试图考虑下bitmap索引,可能也能对你的业务有用。

扩展资料:

索引使用原则:

在正确使用索引的前提下,索引可以提高检索相应的表的速度。当用户考虑在表中使用索引时,应遵循下列一些基本原则。

(1)在表中插入数据后创建索引。在表中插入数据后,创建索引效率将更高。如果在装载数据之前创建索引,那么插入每行时oracle都必须更改索引。

(2)索引正确的表和列。如果经常检索包含大量数据的表中小于15%的行,就需要创建索引。为了改善多个表的相互关系,常常使用索引列进行关系连接。

(3)主键和唯一关键字所在的列自动具有索引,但应该在与之关联的表中的外部关键字所在的列上创建索引。

(4)合理安排索引列。在createindex语句中,列的排序会影响查询的性能,通常将最常用的列放在前面。创建一个索引来提高多列的查询效率时,应该清楚地了解这个多列的索引对什么列的存取有效,对什么列的存取无效。

参考资料来源:百度百科-Oracle索引




温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-23
在oracle中物理结构不一样。
create index INDEX_NAME on TABLE_NAME (ACCNO, ZONENO, CINO)
会根据ACCNO, ZONENO, CINO生成一个BTree索引树。
create index INDEX_NAME on TABLE_NAME (ACCNO)
create index INDEX_NAME on TABLE_NAME (ZONENO)
create index INDEX_NAME on TABLE_NAME (CINO)
会生成3个索引树。

如果你根据ACCNO, ZONENO, CINO三个字段检索,正常情况下(ACCNO, ZONENO, CINO)会快一些。
如果按照ACCNO中的一个字段检索,下面的情况会快一些。

如果在同时建上面两种情况的检索,也不会报错。只是会在DML,更新插入删除时会慢一些。

试图考虑下bitmap索引,可能也能对你的业务有用。本回答被提问者采纳
第2个回答  2010-05-27
这需要看什麼语句定

第1句,select、where、order有用到这3列时,效率高
第2句, select、where、order只用到这1列时,效率高
相似回答