Mysql

FIND_IN_SET 和 LIKE 之間的區別

  • January 2, 2020

在為如下所示的操作選擇 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 數據類型。至少可以說這是不標準和不合邏輯的。

引用自:https://dba.stackexchange.com/questions/80888