这两条sql语句有什么区别,那条sql比较好,为什么?
CREATE CLUSTERED INDEX [idx_groupid] ON [dbo].[auth]
(
[group_id] ASC
)WITH (DROP_EXISTING=on)
ON [PRIMARY]
alter index [idx_groupid] on [dbo].[auth] rebuild
这两条sql语句有什么区别,那条sql比较好,为什么?
------解决方案--------------------本帖最后由 DBA_Huangzj 于 2014-04-03 15:28:22 编辑
有,一个是创建,一个是重建,也就是已经有了,重新建而已,如果之前不存在,需要用第一个,这个没什么可比性
------解决方案--------------------两者都没可比性。
------解决方案--------------------看到你的DROP_EXISTING=on了,这个可以用于重建,而且是首选项,ALTER那个是旧写法,会造成一定的锁问题,建议使用第一种
------解决方案--------------------
修改聚集索引的话,哪一个对非聚集索引的影响都不会小,聚集索引建议建好之后尽量不要动,特别是表数据量很大的情况。
其实你的语句仅仅是建/更改索引,具体哪一个好,还真不好说,感觉你习惯哪个就用哪个吧。实在不行就问问微软。
------解决方案--------------------
第一种方法小
------解决方案--------------------可以的,不过貌似不能动建表时由PK产生的聚集索引
CREATE TABLE test (id INT ,NAME varchar)
CREATE CLUSTERED INDEX Clu_Test ON test(id)
INSERT INTO test(id,name)
VALUES(1,'a'),(2,'b')
CREATE CLUSTERED INDEX Clu_Test ON test(id)WITH (DROP_EXISTING=on)