我知道这已经像任何事情一样被讨论过,但找不到我可以接受的可靠答案。
假设我有一个有100亿条记录的表,需要删除where子句中带有标识列的记录。我应该选择哪个选项?
选项1:禁用索引,这将节省删除后重新排列索引的开销,但会花费更长的时间来搜索需要删除的行。
选项 2:不对索引执行任何操作,这将非常快速地定位行,但重新排列索引可能需要一些时间。
我更倾向于第二种选择,但想看看专家会怎么说? :)
假设我有一个有100亿条记录的表,需要删除where子句中带有标识列的记录。我应该选择哪个选项?
如果要删除(或插入)表的 10% 以上(10 亿条记录),则应删除所有非聚类索引,删除记录,然后重建非聚类索引。
如果要删除的表少于 10%,请将索引保留在原处。
您可以自由地进行性能测试,看看 10% 规则是否适用于您的 SQL Server 数据库引擎。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)