学习数据库优化,有一句话没看懂,来人帮解答

xyj19871987 2014-05-26 05:06:22
“3.查询经常用到的列上建立非聚簇索引,在频繁进行范围查询、排序、分组的列上建立聚簇索引。”

我想问下为什么?我只知道聚簇索引比非聚簇索引快,为何不都用非聚簇索引?
...全文
397 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼W 2014-06-18
  • 打赏
  • 举报
回复
引用 3 楼 wmxcn2000 的回复:
举个例子: 10个人排队,按大小个来排(聚集索引),你想要个头最高的 3 个人,就直接数 1,2,3 就是可以了。 但是你要想年龄最大的 3 个,就得拿一张表出来,这张表上记录着这 10 个的年龄,并且是按从小到大(或从大到小)排好的(一般索引)。 同样,还可以有另外一张表,记录着这10个人的休重(另一个一般索引)。 很显然,这个队列,只能有一个聚集索引。但是可以有多个一般索引
不错,浅显易懂,学习。不过Oracle数据库没有这样的特性,比较接近的应该是索引组织表
卖水果的net 2014-06-18
  • 打赏
  • 举报
回复
举个例子: 10个人排队,按大小个来排(聚集索引),你想要个头最高的 3 个人,就直接数 1,2,3 就是可以了。 但是你要想年龄最大的 3 个,就得拿一张表出来,这张表上记录着这 10 个的年龄,并且是按从小到大(或从大到小)排好的(一般索引)。 同样,还可以有另外一张表,记录着这10个人的休重(另一个一般索引)。 很显然,这个队列,只能有一个聚集索引。但是可以有多个一般索引
小灰狼W 2014-05-27
  • 打赏
  • 举报
回复
在聚簇中,索引里的字段在物理位置上排序,因此在这些字段上进行范围查询的效率很高 有一点要注意的是,聚簇索引并不是像B树索引和位图索引那样可以选择建,也可以选择不建。在Oracle中,可以对两张常要关联的表放一起见一个聚簇,聚簇中必须包含一个聚簇索引,而这个索引列就是两表关联用到的列。所以这里的聚簇更多是一种表的组合方式。 聚簇索引的缺点也很明显,最大的一个是,由于数据的物理存储上按顺序进行排列,维护成本较高。因此经常要更新的表不适合建聚簇。 感觉你看的不是Oracle的优化,更像sql server的
c_sdn_shang_bu_qi 2014-05-27
  • 打赏
  • 举报
回复
楼主你看的是sql server2008宝典的书吧?我也看到了

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧