Как улучшить производительность соединения, используя LIKE и Wildcards? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть серия объединений, которые объединяют таблицу контактов с таблицей сделок с использованием операторов LIKE, CASE и подстановочных знаков. Запрос действительно медленный с выполнением: 1 м 4 с 244 мс и выборкой: 677 мс. Как бы улучшить производительность этого запроса?

from contacts left join deals on deals.associated_vids like
                          Case
                              when canonical_vid = split_part(associated_vids, ',', 1)
                                  then concat(canonical_vid,'%')
                              when canonical_vid =
                                   split_part(associated_vids, ',', (CHAR_LENGTH(associated_vids) - CHAR_LENGTH(REPLACE(associated_vids, ',', ''))) / CHAR_LENGTH(',')+1)
                                  then concat('%',canonical_vid)
                              when canonical_vid is not null
                                  then concat('%,', concat(canonical_vid,',%')) End

Я бы хотел максимально сократить время работы, желательно меньше минуты.

...