社区
MS-SQL Server
帖子详情
关于非聚集索引的问题,有经验的都来看一下
qiashzhou
2007-12-04 10:03:05
我在8月份的时候对表A的字段B建了一个非聚集索引,结果这之前基于字段B的查询操作(分组求和)就快了很多。但是现在对8月份以后插入的数据进行相同的查询速度还是很慢,我把索引删了又重新建了一下,速度变快了。难道建的索引只对当前数据有效?有人能分析一下并指导一下该怎么做才好吗,总不能每次都删了索引再建。
...全文
149
15
打赏
收藏
关于非聚集索引的问题,有经验的都来看一下
我在8月份的时候对表A的字段B建了一个非聚集索引,结果这之前基于字段B的查询操作(分组求和)就快了很多。但是现在对8月份以后插入的数据进行相同的查询速度还是很慢,我把索引删了又重新建了一下,速度变快了。难道建的索引只对当前数据有效?有人能分析一下并指导一下该怎么做才好吗,总不能每次都删了索引再建。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
w2jc
2007-12-05
打赏
举报
回复
但是在数据量不大的情况下每个月都要维护倒是没想到。
-------------------------------------------
根据你的表结构和索引的不同情况,有时候数据量不大也会造成索引碎片,
懒(或者容易)一点的办法就是定期重建索引(不要自己手工删除),比如建一个维护计划定期运行,每2周,每周...
如果数据量太大,更新频繁,可参考5楼给的命令,用dbcc showcontig 来确定碎片很多的索引,
然后只对这个索引进行重建操作。
w2jc
2007-12-04
打赏
举报
回复
每条数据也就几十个字段
-------------------------
这种字段很多的表比较容易造成碎片。
LZ这种情况多半是索引有碎片,或者统计信息没有更新
DBCC DBREINDEX
( 'table_name' [ , 'index_name' [ , fillfactor ] ] )
在SQL 2000里面使用上面的命令去重建你的索引,看联机文档跟详细;
从SQL 2005开始 DBCC DBREINDEX 将被ALTER INDEX取代;
DBCC DBREINDEX 的另外一个好处是可以更新相关的统计信息。
rouqu
2007-12-04
打赏
举报
回复
大致原理
======
非聚集索引与聚集索引的一个本质区别 B*树底部没有数据页 默认索引填充因子0% 是极不饱和状态
你后来插入的数据会在B*树下继续填充现有或添加额外索引页 但不维护索引顺序和数据页针对索引列的物理排序 针对索引列的query会去按照算法搜索或遍历索引页 对于大表可想而知 性能会有提升
如果你的表总数据不到1W条 其实也没必要用索引了 直接扫描表说不定更快
qiashzhou
2007-12-04
打赏
举报
回复
说错了,8月份以后一共插入几千条数据
orochi_gao
2007-12-04
打赏
举报
回复
帮顶,关注学习!
qiashzhou
2007-12-04
打赏
举报
回复
MS SQL 2005里面怎么扫描索引碎片呢?
从8月份新建索引以来一共才插入800多条数据,而且每条数据也就几十个字段,基本没有删除更新操作,怎么就会出这种问题了呢?
ivyrich
2007-12-04
打赏
举报
回复
DBCC SHOWCONTIG 可确定表是否高度碎片化。在对表进行数据修改(INSERT、UPDATE 和 DELETE 语句)的过程中会出现表碎片现象。由于这些修改通常并不在表的行中平均分布,所以每页的填满状态会随时间而改变。
如果索引的碎片非常多,可选择以下方法来减少碎片:
删除然后重新创建聚集索引。
重新创建聚集索引将重新组织数据,从而使数据页填满。填满程度可以使用 CREATE INDEX 中的 FILLFACTOR 选项进行配置。这种方法的缺点是索引在删除/重新创建周期内为脱机状态,并且该操作是一个整体,不可中断。如果中断索引创建,则不能重新创建索引。
对索引的叶级页按逻辑顺序重新排序。
使用 ALTER INDEX…REORGANIZE,对索引的页级页按逻辑顺序重新排序。由于此操作是联机操作,因此语句运行时索引可用。此外,中断该操作不会丢失已完成的工作。这种方法的缺点是在重新组织数据方面没有聚集索引的删除/重新创建操作有效。
联机重新生成索引。
areswang
2007-12-04
打赏
举报
回复
依LZ意思看是索引不起作用了,再建之后又重新起作用。难道会有冲突。学习!
ivyrich
2007-12-04
打赏
举报
回复
建议扫描一下索引碎片
fa_ge
2007-12-04
打赏
举报
回复
对所有记录有效
hui_hui_2007
2007-12-04
打赏
举报
回复
应该不会的,索引都是引对所有记录的。
是不是有别的因素呀。
qiashzhou
2007-12-04
打赏
举报
回复
楼上的说我对索引不了解,这个确实是事实,我也是因为刚开始查询觉得速度比较慢,建了一个索引就快多了。
索引需要维护我倒也知道一点,但是在数据量不大的情况下每个月都要维护倒是没想到。
中国风
2007-12-04
打赏
举报
回复
索引的重建和整理:
http://topic.csdn.net/u/20070329/17/38398e78-adac-4d7e-a8b6-f2d319d283e8.html
wzy_love_sly
2007-12-04
打赏
举报
回复
学习,支持w2jc一下
hb_gx
2007-12-04
打赏
举报
回复
LZ 看来对索引不是很了解,索引不是建了以后就不用去管的,索引是需要经常去维护的,知道为什么维护计划里面会有重新组织和重新生成索引吗?删除重建就相当于是在重新生成索引
既然用Sql2005就看看这个动态管理函数 sys.dm_db_index_physical_stats 好了,或者是联机帮助上的 重新组织和重新生成索引 ,学习一下自己理解理解比较好
MySQL 索引
# 索引的类型(诸多分类方式) 聚集索引
非聚集索引
# 索引的设计原则 1) 索引并非越多越好。 2) 避免对经常更新的表进行过多的索引。 3) 数据量小的表最好不要使用索引。 4) 在条件表达式中经常用到的不同...
聚集索引和
非聚集索引
的区别
一、深入浅出理解索引结构 实际上,可以把索引理解为一种...下面,我们举例来说明
一下
聚集索引和
非聚集索引
的区别: 其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,因为“安”的拼音是...
聚集索引与
非聚集索引
聚集索引与
非聚集索引
的总结 一.索引简介 众所周知,索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,SQL的主流索引结构有B+树以及Hash结构,聚集索引以及
非聚集索引
用的是B+树索引。这篇文章会...
Sqlserver 高级篇
非聚集索引
原理
非聚集索引
非聚集索引
是数据库按照 用户所设置的索引列 创建了多个排序好的索引页 每次查找 都遍历索引页 毕竟 遍历索引页 比直接遍历所有数据要快
非聚集索引
可以有多个 唯一索引 (我们设置好的唯一约束)也...
聚集索引与
非聚集索引
的区别
一.索引简介 众所周知,索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,SQL的主流索引结构有B+树以及Hash结构,聚集...SQL Sever索引类型有:唯一索引,主键索引,聚集索引,
非聚集索引
。 MySQL
MS-SQL Server
34,590
社区成员
254,589
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章