Я выполняю полнотекстовый поиск MySQL.
моя таблица базы данных article1
содержит ~18000
статей, article2
имеет ~7000
статей, article3
имеет ~13000
статейFIELD cat - это поле INDEX
Теперь я хочу выполнить поиск объединений.Есть 5 групп слов, помещенных в 3 таблицы, сопоставьте результаты.Но время процесса составляет 3.1213495136 seconds
.(Я добавляю microtime()
, чтобы посмотреть, сколько это будет стоить).Есть ли способ оптимизировать поиск полнотекстового объединения MySQL?Благодарю.
(SELECT title,content,date FROM article1 WHERE
(cat='novel' AND MATCH (title,content) AGAINST ('+Mary +Barnard' IN BOOLEAN MODE))
OR
(cat='novel' AND MATCH (title,content) AGAINST ('+Patricia +Beer' IN BOOLEAN MODE))
OR
(cat='novel' AND MATCH (title,content) AGAINST ('+Aphra +Behn' IN BOOLEAN MODE))
OR
(cat='novel' AND MATCH (title,content) AGAINST ('+Judy +Blume' IN BOOLEAN MODE))
OR
(cat='novel' AND MATCH (title,content) AGAINST ('+Elizabeth +Bowen' IN BOOLEAN MODE)))
UNION
(SELECT title,content,date FROM article2 WHERE
(MATCH (title,content) AGAINST ('+Mary +Barnard' IN BOOLEAN MODE))
OR
(MATCH (title,content) AGAINST ('+Patricia +Beer' IN BOOLEAN MODE))
OR
(MATCH (title,content) AGAINST ('+Aphra +Behn' IN BOOLEAN MODE))
OR
(MATCH (title,content) AGAINST ('+Judy +Blume' IN BOOLEAN MODE))
OR
(MATCH (title,content)AGAINST ('+Elizabeth +Bowen' IN BOOLEAN MODE)))
UNION
(SELECT title,content,date FROM article3 WHERE
(MATCH (title,content) AGAINST ('+Mary +Barnard' IN BOOLEAN MODE))
OR
(MATCH (title,content) AGAINST ('+Patricia +Beer' IN BOOLEAN MODE))
OR
(MATCH (title,content) AGAINST ('+Aphra +Behn' IN BOOLEAN MODE))
OR
(MATCH (title,content) AGAINST ('+Judy +Blume' IN BOOLEAN MODE))
OR
(MATCH (title,content)AGAINST ('+Elizabeth +Bowen' IN BOOLEAN MODE)))
Order By date DESC LIMIT 10