У меня есть два проекта (A и B).Они оба построены на платформе CakePHP, и в основном они получили одинаковую структуру, что означает, что обе их базы данных имеют одинаковую структуру.Допустим, они идентичны.
Я создал представление, в которое поместил все данные, необходимые для поиска, и назвал его search_areas.Каждый столбец из таблиц, которые находятся в представлении, являются индексами FULLTEXT.
Теперь, когда я выполняю поиск в проекте A, он работает как чудо-кнопка.Но когда я делаю это на проекте B, это занимает вечность.На самом деле, что-то застревает, что-то в кодеБаза данных работает нормально, но приложение не работает около 10 минут.Кто-нибудь сталкивался с такой проблемой?
Это SQL, который запускается при выполнении поиска:
SELECT
Product.*,
MainImage.*,
Currency.rate,
Category.green_tax,
CategoriesCategory.full_alias,
(Product.price*Currency.rate + Category.green_tax)*1.24 as real_price,
MATCH (SearchArea.Cname,SearchArea.Mname,SearchArea.Pname,SearchArea.description,SearchArea.special_description,SearchArea.model,SearchArea.part_number,SearchArea.series,SearchArea.color,SearchArea.big_string) AGAINST ('+search term' IN BOOLEAN MODE) as score
FROM `products` AS `Product`
LEFT JOIN currencies AS `Currency` ON (`Product`.`currency` = `Currency`.`code`)
LEFT JOIN categories AS `Category` ON (`Product`.`category_id` = `Category`.`id`)
LEFT JOIN manufacturers AS `Manufacturer` ON (`Product`.`manufacturer_id` = `Manufacturer`.`id`)
LEFT JOIN categories_categories AS `CategoriesCategory` ON (`Product`.`category_id` = `CategoriesCategory`.`category_id`)
LEFT JOIN search_areas AS `SearchArea` ON (`SearchArea`.`id` = `Product`.`id`)
LEFT JOIN `product_images` AS `MainImage` ON (`MainImage`.`product_id` = `Product`.`id` AND `MainImage`.`main` = 1)
WHERE
MATCH (`SearchArea`.`Cname`,`SearchArea`.`Mname`,`SearchArea`.`Pname`,`SearchArea`.`description`,`SearchArea`.`special_description`,`SearchArea`.`model`,`SearchArea`.`part_number`,`SearchArea`.`series`,`SearchArea`.`color`,`SearchArea`.`big_string`) AGAINST ('+search term' IN BOOLEAN MODE)
AND `Product`.`active` = 1
LIMIT 15
Любые идеи?
****** EDIT *****
Я выполнил запросв MySQL и кажется, что есть проблема.Это занимает очень много времени (2-5 минут).Кажется, я должен оптимизировать свой запрос, возможно, найти другое решение.Спасибо за помощь.Если у кого-то есть идея, как эффективно использовать синтаксис MATCH ... AGAINST ... в представлении или каком-либо объединенном элементе, пожалуйста, напишите.Я, вероятно, откажусь от вышеуказанного решения.