Поскольку количество строк указывает на количество строк, возвращаемых клиенту. И удаление не возвращает никаких строк, если вы не используете предложение OUTPUT
.
Обновление: ==> Я исправлен
Доказательство:
SELECT *
FROM Accounts
WHERE Category= 'COA'
AND Code between 1500 and 2000
-- 18 Reads, 0 Writes, 51 RowCount
DELETE FROM Accounts
WHERE Category = 'COA'
AND Code between 1500 and 2000
-- 22 Reads, 1 Writes, 51 RowCount
DELETE FROM Accounts
OUTPUT DELETED.*
WHERE Category = 'COA'
AND Code between 2000 and 4000
-- 24 Reads, 3 Writes, 103 RowCount
Выполнение оператора удаления для 2 таблиц с 5 миллионами записей, который не удаляет записи, дает мне следующий план запроса: *
delete clust from clust, heap where clust.Key= heap.Key
-- 19854 Reads, 0 Writes, 0 RowCount
|--Clustered Index Delete(OBJECT:([dbo].[clust].[idx_clust]), OBJECT:([dbo].[clust].[idx2_clust]))
|--Top(ROWCOUNT est 0)
|--Parallelism(Gather Streams)
|--Hash Match(Right Semi Join, HASH:([dbo].[heap].[Key])=([dbo].[clust].[Key]))
|--Bitmap(HASH:([dbo].[heap].[Key]), DEFINE:([Bitmap1012]))
| |--Parallelism(Repartition Streams, Hash Partitioning, PARTITION COLUMNS:([dbo].[heap].[Key]))
| |--Stream Aggregate(GROUP BY:([dbo].[heap].[Key]))
| |--Index Scan(OBJECT:([dbo].[heap].[idx_heap]), ORDERED FORWARD)
|--Parallelism(Repartition Streams, Hash Partitioning, PARTITION COLUMNS:([dbo].[clust].[Key]))
|--Index Scan(OBJECT:([dbo].[clust].[idx2_clust]), WHERE:(PROBE([Bitmap1012],[dbo].[clust].[Key],N'[IN ROW]')) ORDERED FORWARD)
Выполнение одного и того же запроса в 2 небольших таблицах по 10 строк в каждой дает следующие результаты:
delete smallclust from smallclust, smallheap where smallclust.srp_key = smallheap.common_key
-- 45 Reads, 0 Writes, 0 RowCount
|--Table Delete(OBJECT:([dbo].[smallclust]))
|--Top(ROWCOUNT est 0)
|--Nested Loops(Left Semi Join, WHERE:([dbo].[smallheap].[Key]=[dbo].[smallclust].[Key]))
|--Table Scan(OBJECT:([dbo].[smallclust]))
|--Table Scan(OBJECT:([dbo].[smallheap]))
Таким образом, предположение о хеш-таблице, вызывающей записи, остается неубедительным.