Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql select in list mit regexp/substring

Dies ist eine JOIN-Operation mit einem hässlichen bösen unsargable langsamen ON Zustand.

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

Es ist langsam, weil 'needle' LIKE '%haystack%' bedeutet, dass MySQL alles im Heuhaufen durchsuchen muss, um die Nadel zu finden.

Andererseits ist 'needle' LIKE 'haystack%' (ohne das führende % ) kann Verwenden Sie einen Index. Wenn dies also in Ihren Daten funktioniert, sollten Sie es verwenden.

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