sql-server – 如何使用TRUNCATE TABLE影响索引

使用sql Server 2005,升级到2012

如果我有ETL,则执行以下操作(简化)

TruncATE TABLE detination
INSERT INTO detination
SELECT *
FROM source

这是否清除索引并使用插入重建它?我有碎片吗?

解决方法

假设它不会截断索引.这意味着数据库在物理上不一致.所以不可能这样.

截断逻辑删除所有行,并为所有分区物理创建新的b树.由于树木是新鲜的,因此不存在碎片.

实际上我不确定树是否分配了0或1页.但没关系.我相信临时表有一个与临时表缓存有关的特殊情况.也没关系.

您问题的插入与任何其他插入的工作方式相同.它不受交叉语句通信方式中的前一个截断的影响.它是否导致碎片取决于您的具体情况,恕我直言,最好放在一个新问题.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...