sql 中 alter index rebuild 用法_sql 中 alter index rebuild 重建索引教程

哈喽,看来你把SQL里REBUILD索引的教程都整明白了啊。
不过听你这么讲,感觉有点像念说明书,咱们换个方式聊聊?上周有个客人问我这个事儿,他当时正好把一个超大的销售表索引重建了,结果数据库CPU飙到2 00%。
所以啊,这事不能瞎来。

你说的基本语法没错,就是那个ALTER INDEX idx_order_date ON orders REBUILD; 这条。
但我要是你,会先问几个问题。
这个orders表到底多大?上周我碰到一个1 0G的表,直接重建索引,整个数据库停了半小时。
而且要确认一下,这个idx_order_date是不是唯一索引?要是主键索引或者聚集索引,那风险可就大了去了。

说到带参数的重建,你提的FILLFACTOR和ONLINE特别关键。
有个次级索引我去年调整过FILLFACTOR到8 0,现在新数据插入性能好了不少。
但ONLINE=ON这玩意儿,得看SQL Server版本。
我有个客户2 02 0版的,开了这个参数居然崩溃了。
所以参数这东西,得像调咖啡浓度似的,一点一点来。

判断碎片率那部分写得挺好。
我有个小技巧,用动态管理视图的时候,加个WHERE子句限定表大小。
比如只看超过5 G的表,效率高很多。
但要注意,碎片率超过3 0%这个标准不是绝对的。
有次我按这个标准重建了一个索引,结果查询速度反而慢了。
后来发现是数据分布太不均了,应该改用分区表才对。

最关键的是你说的注意事项。
有个技术员去年忘了ONLINE参数,把一个电商大表锁了6 小时。
现在我们规定,重建索引前必须开个两小时会议,专门讨论这事儿。
空间占用更别提了,有个表重建时临时用了2 T的tempdb,把备份服务器差点拖垮。

其实吧,维护数据库就像照顾孩子,不能天天抱着。
我建议你先建个监控,碎片率超过1 5 %就报警,然后分析是数据量增长快还是查询太奇葩。
大部分情况,重组织REORGANIZE就够了,重建REBUILD留到真出问题再说。

反正你看着办吧,我还在想那个销售表的问题...

达梦创建索引语句

2 02 3 年,我那个朋友在达梦数据库里创建索引,主要用这几种方式:
1 . 命令方式:比如创建普通索引,他会写 CREATE INDEX ind_name ON TEST.student(user_name) TABLESPACE ind_tbs;,这样可以在已有表上创建索引,还能指定索引数据空间。

2 . 复合索引:比如他需要根据多个列查询,就会用 CREATE INDEX ind_name_sex ON TEST.student(user_name, user_sex) TABLESPACE ind_tbs;。

3 . 唯一索引:如果他要保证某个列的值唯一,就会用 CREATE UNIQUE INDEX ind_phone ON TEST.student(phone);。

4 . 表创建时直接创建索引:比如 CREATE TABLE ... ( ... INDEX idx_name (col_name) ... );。

5 . 可视化方式:通过DM管理工具,他可以图形化操作,点几下鼠标就能创建索引。

注意事项,他得记得,数据插入或装载后再创建索引更有效率。
如果数据还没来就创建索引,每次插入数据都要维护索引,效率会低。

对了,他得注意具体语句可能因版本不同而有所变化,最好查查官方文档或者问问专业人士。
算了,你看着办吧。