SELECT *
FROM foo
WHERE FIND_IN_SET(5, keyword_ids)
Обратите внимание, однако, что это выражение по-прежнему не может быть sargable, это означает, что индекс keyword_ids
не может улучшить этот запрос.
Вам следует нормализовать вашу модель, если вы хотите, чтобы это было быстрым для поиска.
Другой вариант - сохранить ключевые слова, разделенные запятыми (а не ids
), в таблице и создать для них индекс FULLTEXT
:
CREATE FULLTEXT INDEX fx_foo_keyword ON (keywords)
SELECT *
FROM foo
WHERE MATCH(keywords) AGAINST ('+keyword5' IN BOOLEAN MODE)
Это, однако,работать только на MyISAM
столе.