Это, вероятно, слишком просто для того, что вы ищете, и это не исследование :-), а просто концептуально. Я полагаю, вы хотите сравнить различные методы обработки накладных расходов (?).
- Это половина того, чего ты не хочешь (A)
SELECT o.Key FROM tbl_ORIGINAL o INNER JOIN tbl_NEW n WHERE o.Content = n.Content
- Это другая половина того, что вы не хотите (B)
SELECT n.Key FROM tbl_ORIGINAL o INNER JOIN tbl_NEW n WHERE o.Content = n.Content
- Это половина того, что вы действительно хотите (C)
SELECT '+++' as diff, n.key, Content FROM tbl_New n WHERE n.KEY NOT IN( B )
- Это другая половина того, что вы действительно хотите (D)
SELECT '---' as diff, o.key, Content FROM tbl_Original o WHERE o.Key NOT IN ( A )
- Объединение C & D
( C )
Union
( D )
Order By diff, key
Улучшения ...
- попробуйте создать индексированные представления
базовые таблицы сначала
- попробуйте уменьшить длину
поле содержимого, чтобы это мин для
уникальность (проба / ошибка), а затем
использовать этот более короткий результат, чтобы сделать ваш
сравнение
- например чтобы получить минимальную длину (1000 произвольно - просто нужен выход)
declare @i int
set @i = 1
While i < 1000 and Exists (
Select Count(key), Left(content,@i) From Table Having Count(key) > 1 )
BEGIN
i = @i + 1
END