Мой запрос MySQL выглядит так:
SELECT pages.*,
showcase.*,
project.*
FROM pages
INNER JOIN showcase ON showcase.pid = pages.uid AND showcase.deleted != 1
INNER JOIN project ON FIND_IN_SET(project.uid, showcase.projects)
WHERE pages.deleted != 1
AND pages.pid = 14
AND pages.dokType = 150
Проблема вторая INNER JOIN
- она использует FIND_IN_SET
, поскольку витрина (= коллекция проектов) сохраняет свои проекты в виде списка через запятую в поле showcase.projects
. Насколько мне известно, FIND_IN_SET
не может использовать индексы, поэтому для второго соединения требуется полная проверка таблицы проекта. Любая возможность использовать индекс без изменения схемы базы данных?