Я работаю над условием соединения между двумя таблицами, где один из столбцов для сопоставления является объединением значений. Мне нужно присоединить columnA из tableA к первым двум символам columnB из tableB.
Я разработал 2 разных оператора, чтобы справиться с этим, и попытался проанализировать производительность каждого метода.
Метод 1:
ON tB.columnB like tA.columnA || '%'
Метод 2:
ON substr(tB.columnB,1,2) = tA.columnA
План выполнения запроса содержит намного меньше шагов с использованием метода 1 по сравнению с методом 2, однако похоже, что метод 2 выполняется намного быстрее. Кроме того, в плане выполнения указан рекомендуемый индекс для метода 2, который может улучшить его производительность.
Я использую это на IBM iSeries, хотя мне были бы интересны ответы в общем смысле, чтобы узнать больше об оптимизации запросов sql.
Имеет ли смысл, что метод 2 будет выполняться быстрее?
Этот вопрос SO похож, но похоже, что никто не дал конкретных ответов на разницу в производительности этих подходов: Сравнение скорости T-SQL между оператором LEFT () и LIKE .
PS: Дизайн таблицы, требующий этого типа соединения, не является чем-то, что я могу изменить в настоящее время. Я понимаю, что было бы предпочтительнее разделить поля, содержащие разные типы данных.