sql >> Databasteknik >  >> RDS >> Mysql

mysql välj i listan med regexp/substring

Det här är en JOIN-operation med en otäck otäck, osargbar långsam ON skick.

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

Det är långsamt eftersom 'needle' LIKE '%haystack%' innebär att MySQL måste titta på allt i höstacken för att hitta nålen.

Å andra sidan, 'needle' LIKE 'haystack%' (utan den inledande % ) kan använd ett index. Så om detta fungerar i din data bör du använda det.

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


  1. MySQL skiftlägeskänslighetstabellnamn på MacOS med skiftlägesokänsligt filsystem

  2. Hur får du din booleska fulltextsökning att ta upp termen C++?

  3. Vilka är fördelarna och nackdelarna med att lagra filer i en databas?

  4. MYSQL &innoDB ändrar dynamiskt AUTO_INCREMENT av en tabell