Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql select dans la liste avec regexp/substring

Il s'agit d'une opération JOIN avec un méchant méchant unsargable lent ON état.

SELECT B.description
  FROM A
  JOIN B ON B.description LIKE CONCAT('%', A.code, '%')

C'est lent car 'needle' LIKE '%haystack%' signifie que MySQL doit tout examiner dans la botte de foin pour trouver l'aiguille.

D'un autre côté, 'needle' LIKE 'haystack%' (sans le % de tête ) peut utiliser un indice. Donc, si cela fonctionne dans vos données, vous devez l'utiliser.

SELECT B.description
  FROM A
  JOIN B ON B.description LIKE CONCAT('FAX', A.code, '%')