Mysql
 sql >> Database >  >> RDS >> Mysql

mysql seleziona nell'elenco con regexp/substring

Questa è un'operazione JOIN con un brutto brutto unsargable lento ON condizione.

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

È lento perché 'needle' LIKE '%haystack%' significa che MySQL deve guardare tutto nel pagliaio per trovare l'ago.

D'altra parte, 'needle' LIKE 'haystack%' (senza il % iniziale ) può usa un indice. Quindi, se funziona con i tuoi dati, dovresti usarlo.

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