MS SQL -- понять какой запрос быстрее (читать план запросов)
От: Shmj Ниоткуда  
Дата: 29.12.16 16:53
Оценка:
Вот есть 2 идентичных запроса:

1
UPDATE dbo.[Transfer]
SET SpendingTransactionId = (
   SELECT TOP 1 s.[Index] / 100000
   FROM dbo.Spending s
      JOIN dbo.[Transaction] tn
         ON tn.[Index] = [Transfer].[Index] / 100000
            AND tn.[Hash] = s.SourceTransactionHash)


2
UPDATE dbo.[Transfer]
SET SpendingTransactionId = s.[Index] / 100000
FROM dbo.Spending s
   JOIN dbo.[Transaction] tn
      ON tn.[Hash] = s.SourceTransactionHash
WHERE  tn.[Index] = [Transfer].[Index] / 100000


Для устанавливаемого поля (SpendingTransactionId) индекс отключен (Disabled). Для всех остальных полей, которые участвуют в выборке, есть индексы (одно поле 1 индекс).

Как понять какой запрос выполнится быстрее? Estimated execution plan в каждом из случаев показывает 100%. Куча квадратиков, а как оценить какой запрос выполнится быстрее -- Нафиг он вообще нужен этот Estimated execution plan? Как он мне может помочь в оценке?

Может есть какая статья Quik Start или кто хочет за деняжку помочь?

Данных многовато, запустил первый запрос и ждал 2 часа. Решил прибить и запустил сейчас второй.

Update (планы)

  Скрытый текст
1


2
Отредактировано 30.12.2016 0:00 Shmj . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.