SELECT d.id, d.email
FROM data d
INNER JOIN errors e ON d.email LIKE '%' + e.error
сделать бы это, однако делает LIKE с групповым символом в начале значения, совпадающим по помешают индекс от использования, чтобы вы могли видеть плохую производительность.
Оптимальным подходом было бы определение вычисленного столбца в таблице данных, то есть REVERSE поля электронной почты и индексация его. Это превратило бы выше запрос в LIKE состоянии с групповым символом в конце, как так:
SELECT d.id, d.email
FROM data d
INNER JOIN errors e ON d.emailreversed LIKE REVERSE(e.error) + '%'
В этом случае производительность будет лучше, так как это позволило бы индекс будет использоваться.
Я написал полную запись на этом подходе a while ago here.
Нам нравятся вопросы SQL! –
yey! Я надеюсь, что это будет продвигаться в ближайшее время ... http://area51.stackexchange.com/proposals/4260/databases?referrer=diRC8jcl2i-5LIh8JGLLjA2 –