加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 任何数据库允许同时创建同一个表上的多个索引?

发布时间:2020-12-12 08:23:21 所属栏目:MsSql教程 来源:网络整理
导读:我很确定这在Oracle中无法做到,但我很乐意被证明是错误的 说我有一个巨大的表,有很多列,我想在十几个列上创建索引.使用Oracle,我会启动几个连续的创建索引语句,并关闭并烧开水壶. 每个创建索引需要扫描表中的每一行以形成索引. 即10个索引= 10次全扫描. 你会
我很确定这在Oracle中无法做到,但我很乐意被证明是错误的

说我有一个巨大的表,有很多列,我想在十几个列上创建索引.使用Oracle,我会启动几个连续的创建索引语句,并关闭并烧开水壶.

每个创建索引需要扫描表中的每一行以形成索引.

即10个索引= 10次全扫描.

你会认为一个明显的优化是扫描一次表并同时对10列进行索引.不是吗

create indexes on mytable (
    ix_mytable_cola (cola),ix_mytable_colb (colb),ix_mytable_colc (colc)
);

很明显,为什么不在那里呢?

有任何想法吗?

我可以在单独的会话中同时触发每个创建索引,并希望数据库缓冲区缓存保存一天,但是似乎是一个漫长的镜头.

编辑

我没有得到一个明确的答案,所以我在Oracle-L上提出了同样的问题:

http://www.freelists.org/post/oracle-l/Creating-multiple-indexes

普遍的共识是,它不可用,但可能是一个有用的功能.最有用的回应来自David Aldridge,他们建议如果创建索引语句同时被启动,那么Oracle将“做正确的事情”.

解决方法

对Oracle而言,答案是否定的,根据我的研究,对DB2也是如此.我怀疑任何其他人都有这个功能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读