永发信息网

SQL中的聚簇索引和非聚簇索引什么意思?

答案:2  悬赏:20  手机版
解决时间 2021-11-07 04:47
SQL中的聚簇索引和非聚簇索引什么意思?
最佳答案
1、聚簇索引是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。由于聚簇索引的索引页面指针指向数据页面,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。
建立聚簇索引的思想是:
1.1、大多数表都应该有聚簇索引或使用分区来降低对表尾页的竞争,在一个高事务的环境中,对最后一页的封锁严重影响系统的吞吐量。
1.2、在聚簇索引下,数据在物理上按顺序排在数据页上,重复值也排在一起,因而在那些包含范围检查(between、<、<=、& gt;、>=)或使用group by或order by的查询时,一旦找到具有范围中第一个键值的行,具有后续索引值的行保证物理上毗连在一起而不必进一步搜索,避免了大范围扫描,可以大大提高查询速度。
1.3、在一个频繁发生插入操作的表上建立聚簇索引时,不要建在具有单调上升值的列(如IDENTITY)上,否则会经常引起封锁冲突。
1.4、在聚簇索引中不要包含经常修改的列,因为码值修改后,数据行必须移动到新的位置。
1.5、选择聚簇索引应基于where子句和连接操作的类型。
聚簇索引的侯选列是:
1、主键列,该列在where子句中使用并且插入是随机的。
2、按范围存取的列,如pri_order > 100 and pri_order < 200。
3、在group by或order by中使用的列。
4、不经常修改的列。
5、在连接操作中使用的列。

2、SQLServer缺省情况下建立的索引是非聚簇索引,由于非聚簇索引不重新组织表中的数据,而是对每一行存储索引列值并用一个指针指向数据所在的页面。换句话说非聚簇索引具有在索引结构和数据本身之间的一个额外级。一个表如果没有聚簇索引时,可有250个非聚簇索引。每个非聚簇索引提供访问数据的不同排序顺序。在建立非聚簇索引时,要权衡索引对查询速度的加快与降低修改速度之间的利弊。另外,还要考虑这些问题:
2.1、索引需要使用多少空间。
2.2、合适的列是否稳定。
2.3、索引键是如何选择的,扫描效果是否更佳。
2.4、是否有许多重复值。
  对更新频繁的表来说,表上的非聚簇索引比聚簇索引和根本没有索引需要更多的额外开销。对移到新页的每一行而言,指向该数据的每个非聚簇索引的页级行也必须更新,有时可能还需要索引页的分理。从一个页面删除数据的进程也会有类似的开销,另外,删除进程还必须把数据移到页面上部,以保证数据的连续性。所以,建立非聚簇索引要非常慎重。
非聚簇索引常被用在以下情况:
1、某列常用于集合函数(如Sum,....)。
2、某列常用于join,order by,group by。
3、查寻出的数据不超过表中数据量的20%。
全部回答
一般来说有没有索引程序都是那样设计,只有有了索引后数据库管理系统它会自动去按合适的索引去查找。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
芭蕉芋怎么吃好吃?
花菇种植技术
女人禁欲太久会发生什么惊人的变化
日本明治到大正年间一共发行过多少年份的一元
养猪污染对环境的影响有多大
有几个在迷你世界找到村庄
以《盼》为题的故事
Win10 cs1.55运行不了,安装完成后显示的这个
用dedecms怎么制作自己的后台,再与前台数据
流什么百什么
海螺沟直属大队科目一考场地址在哪,我要去那
刘谦现在不变魔术了吗
微粒贷40000元分为20期总利息多少?
“老北京”翻译成英语怎么说?
请问朋友们 新疆哈巴河县有开放的边境口岸吗
推荐资讯
会东县公安局交警大队车管所地址在哪,我要去
西昌阳光学校什么时候招生
关于USB接口的问题
两行三列矩阵于三行两列矩阵的秩的大小比较
一个本来挺阳光得女人,因为接触阴暗的人多了
供应水草藤椅可以放在阳台吗
债券收益不是固定的吗
梁河县勐养邮政所地址在哪,我要去那里办事
虽然这件事是虚幻的,但是很真实的成语
109.2÷0.42 答案
我是一个小工头、带领几十人在一工地上承包粉
没有对象的周末,你一般会干些什么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?