Я написал запрос следующим образом:Дела в запросе SELECT,
SELECT * FROM Table1
LEFT JOIN Table2
ON Table2.field1 LIKE CASE WHEN Table2.field2= 1
THEN Table1.field1
WHEN Table2.field2 = 2
THEN Table1.field1 + '%'
END
Запрос занимает слишком много выполнения time.While проверки плана, который я нашел время проводить за счет соответствия. Как я могу перезаписать оператор CASE в SELECT, чтобы свести к минимуму время выполнения?
Ваше соединение с использованием оператора LIKE, который будет выполнять таблицы каждый раз. Я не вижу способа улучшить время выполнения, если ваше условие соединения настолько переменное. – Matt
+1 @Matt. Вероятно, вам лучше не разделять код на логику ветвления, если производительность достаточно плоха. Просто будьте осторожны с планированием кэширования, если этот код живет в proc ... вам может потребоваться вложить некоторые procs с разделенной логикой, чтобы обеспечить надлежащее кэширование/производительность плана. – DCaugs