SELECT d.id, d.email
FROM data d
INNER JOIN errors e ON d.email LIKE '%' + e.error
ferait, en faisant cependant LIKE avec un caractère générique au début de la valeur étant égalés sur empêchera un indice d'être utilisé afin que vous puissiez voir une mauvaise performance.
Une approche optimale consisterait à définir une colonne calculée sur la table de données, c'est-à-dire l'INVERSE du champ email et à l'indexer. Transformerait la requête ci-dessus dans une condition LIKE avec le caractère générique à la fin comme ceci:
SELECT d.id, d.email
FROM data d
INNER JOIN errors e ON d.emailreversed LIKE REVERSE(e.error) + '%'
Dans ce cas, la performance serait mieux car elle permettrait d'utiliser un index. J'ai écrit un blog complet sur cette approche a while ago here.
Nous aimons les questions SQL! –
yey! J'espère que cela sera promu bientôt ... http://area51.stackexchange.com/proposals/4260/databases?referrer=diRC8jcl2i-5LIh8JGLLjA2 –