Mysql
FIND_IN_SET 和 LIKE 之間的區別
在為如下所示的操作選擇 FIND_IN_SET 而不是 LIKE 時,行為或性能是否存在差異:
SELECT * FROM my_table WHERE column_1 LIKE '%string%';
對比
SELECT * FROM my_table WHERE FIND_IN_SET('string', column_1) > 0;
這是在 Percona 伺服器上完成的。
我會使用 LIKE 有一個很好的理由。來自此處的文件-“如果第一個參數包含逗號 (“,”) 字元,則此函式 (FIND_IN_SET) 無法正常工作”。
您總是可以使用 EXPLAIN 來檢查性能 - 但僅出於上述原因,我不會使用它。
$$ EDIT $$ 你總是可以使用LOCATE()。我強烈建議您不要使用 MySQL 的 SET 數據類型。至少可以說這是不標準和不合邏輯的。