web-dev-qa-db-fra.com

Différence entre Find_in_set et comme

Existe-t-il une différence de comportement ou de performance dans le choix de la Find_in_set sur une opération qui ressemble à:

SELECT * FROM my_table WHERE column_1 LIKE '%string%';

vs

SELECT * FROM my_table WHERE FIND_IN_SET('string', column_1) > 0;

Ceci est fait sur le serveur Percona.

1
Jamil Seaidoun

J'utiliserais comme pour une très bonne raison. De la documentation ici - "Cette fonction (Find_in_set) ne fonctionne pas correctement si le premier argument contient une virgule (", ") caractère".

Vous pouvez toujours utiliser une explication pour vérifier la performance - mais simplement pour la raison ci-dessus, je ne l'utiliserais pas.

[ÉDITER]

Vous pouvez toujours utiliser localiser () . Je Fortement Je vous recommande d'utiliser le type de données de mySQL. Il est non standard et illogique de dire le moins.

2
Vérace