Я работаю над условием соединения двух таблиц, в которых один из столбцов для сопоставления является объединением значений.Мне нужно присоединить columnA из таблицы A к первым 2 символам columnB из таблицы B.
Я разработал 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: Дизайн таблицы, который требует такого типа соединения, я не могу изменить в это время.Я понимаю, что разделение полей, содержащих разные типы данных, было бы предпочтительным.