这与这个问题有关:Efficient INSERT INTO a Table With Clustered Index
从这个问题来看,SQL Server 有时会在将多个值插入具有聚集索引的表中以减少碎片时对数据进行预排序。当我使用表值构造函数在插入语句中插入多个值时,SQL Server 也会这样做吗?
例如,如果我有一个event_log聚集在一timestamp列上的表,我插入这样的数据:
INSERT INTO event_log (timestamp, data)
VALUES
('03:00:02', 'data string...'),
('03:00:01', 'data string...'),
('03:00:00', 'data string...')
Run Code Online (Sandbox Code Playgroud)
SQL Server 是否会为我预先排序以确保数据有效地进入而不会产生碎片,还是应该在生成 SQL 之前对应用程序中的数据进行排序?