2013-10-10 4 views
-1

У меня этот запрос, который работает очень медленно в SQL Server. Пожалуйста, предложите оптимизировать его, чтобы работать быстрее.Ищите оптимизацию запросов SQL Server

  • TABLE_A имеет 100'000'000 строки
  • TABLE_B имеет 1'000'000 строк

Обе таблицы имеет некластеризованный индекс ID, Modify_Date и Source колонок.

Запрос:

Insert into TABLE_A  
    select * from RABLE_B B 
    Where NOT Exists (Select 1 
        From TABLE_A A 
        Where B.ID = A.ID 
         And B.Modify_Date = A.Modify_Date 
         And B.Source = A.Source) 
+1

Если у вас нет уже: добавить ** ** хороший ключ кластеризации для обеих таблиц! –

ответ

4
INSERT INTO TABLE_A 
     SELECT B.* 
     FROM TABLE_B B 
       LEFT JOIN TABLE_A A ON B.ID = A.ID 
            AND B.Modify_Date = A.Modify_Date 
            AND B.Source = A.Source 
     WHERE A.ID IS NULL 
+0

Multi join под левым также работает медленно. – dev777

+0

Почему вы считаете, что запрос, который я упомянул, работает медленно, а обновленный запрос будет быстрее. – dev777

+0

Затем вы должны создать индекс на [Modify_Date] и [Source] – Zyku

Смежные вопросы