Мне интересно, как ускорить запрос ниже. Я использую разные INNER JOIN для извлечения содержимого, принадлежащего разным категориям узлов. Очевидно, что на txt_for_search есть индекс FULLTEXT.
SELECT DISTINCT(c.id_content)) as tot, c.* FROM Contents c
INNER JOIN (SELECT id_content FROM Content_Nodes
WHERE id_node IN (139)) cn1 ON c.id_content=cn1.id_content
INNER JOIN (SELECT id_content FROM Content_Nodes
WHERE id_node IN (6)) cn2 ON c.id_content=cn2.id_content
INNER JOIN (SELECT id_content FROM Content_Nodes
WHERE id_node IN (389,399)) cn3 ON c.id_content=cn3.id_content
WHERE MATCH(txt_for_search) AGAINST ('my query' IN BOOLEAN MODE) and DATEDIFF(NOW(),to_date)<=365 and enabled=1
Если я сделаю этот запрос, он будет очень быстрым
SELECT DISTINCT(c.id_content)) as tot, c.* FROM Contents c
WHERE MATCH(txt_for_search) AGAINST ('my query' IN BOOLEAN MODE) and DATEDIFF(NOW(),to_date)<=365 and enabled=1
Даже SELECT, связанный с INNER JOIN, очень быстр.
Вместе мне нужно ждать больше 100 секунд ...