我的SQL Server表中有80亿条记录。我需要在几列上创建索引。我相信这将花费大量时间。
有人可以告诉我更快更好的方法吗?
答案 0 :(得分:3)
我能想到的一个选项是SORT_IN_TEMPDB = ON.
,可以帮助您更快地创建索引
用于构建索引的中间排序结果存储在tempdb中。如果tempdb位于与用户数据库不同的磁盘集上,则这可能会减少创建索引所需的时间。但是,这会增加索引构建期间使用的磁盘空间量。
您也可以尝试不查询表格,以便在创建索引期间不会出现任何锁定,阻止,或者根据您的sqlserver版本使用ONLINE = { ON | OFF }
。
此外,如果您的数据库采用简单恢复模式,则此操作记录最少,从而减少了IO ..
答案 1 :(得分:0)
创建索引真的不需要那么长时间:
CREATE INDEX index_name
ON table_name (column1, column2, ...)