Предложение IN, приводящее к медленному выполнению запроса - PullRequest
0 голосов
/ 03 апреля 2020

Для повышения производительности я сохраняю переменную в глобальной таблице, а затем использую ее в подзапросе, но это наоборот - производительность очень низкая. Если я удаляю предложение IN, производительность запроса быстрее. Есть ли другие способы, которые я могу использовать ниже в предложении IN по-другому, чтобы оптимизировать производительность или какие-либо предложения для повышения производительности. Спасибо за любую помощь.

Insert into GlobalTempTable(
  BranchID; //inserting branchID in gtt, this is not required and can be null
); 

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate, Employee.EmpName
FROM Orders
JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
JOIN Employee ON Customers.SalesID = Employee.EmpID;
WHERE Orders.OrDate <= '2020-04-01'
AND (BranchID IS NULL or Employee.BranchID IN (SELECT BranchID FROM GlobalTempTable )); //this IN clause is 
causing query to run slow

1 Ответ

1 голос
/ 03 апреля 2020

Попробуйте заменить на EXISTS:

EXISTS ( SELECT 1 FROM GlobalTempTable gtt Employee.BranchID = gtt.BranchID )

И убедитесь, что у вас есть индекс для GlobalTempTable(BranchID).

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