Составил запрос, но мне кажется что он при большом количестве записей будет медленным, подскажите как его можно оптимизировать, или и так сойдет
'(SELECT n.img,n.title,n.date,n.url,n.descript FROM novosty n
join (SELECT id_statia FROM title where MATCH (title) AGAINST( "'.$search.'" IN BOOLEAN MODE) and cat="1") t ON n.id = t.id_statia)
union
(SELECT n.img,n.title,n.date,n.url,n.descript FROM statia n
join (SELECT id_statia FROM title where MATCH (title) AGAINST( "'.$search.'" IN BOOLEAN MODE) and cat="2") t ON n.id = t.id_statia)
union
(SELECT n.img,n.title,n.date,n.url,n.descript FROM test_drive n
join (SELECT id_statia FROM title where MATCH (title) AGAINST( "'.$search.'" IN BOOLEAN MODE) and cat="3") t ON n.id = t.id_statia)
union
(SELECT n.img,n.title,n.date,n.url,n.descript FROM history n
join (SELECT id_statia FROM title where MATCH (title) AGAINST( "'.$search.'" IN BOOLEAN MODE) and cat="4") t ON n.id = t.id_statia)
'
Спустя 24 минуты, 4 секунды (21.06.2012 - 11:32) sergeiss написал(а):
А почему бы эти категории не сделать где-то в одном условии, зачем столько джойнов?
Спустя 30 минут, 47 секунд (21.06.2012 - 12:02) Markus111 написал(а):
Не пойму каким образом это сделать
Спустя 9 минут, 39 секунд (21.06.2012 - 12:12) vagrand написал(а):
Запрос ужасен, при большом количестве записей и нагрузке положит сервак
Спустя 29 минут, 23 секунды (21.06.2012 - 12:41) Markus111 написал(а):
Помогите составить нормальный запрос
Спустя 13 минут, 11 секунд (21.06.2012 - 12:55) sergeiss написал(а):
Цитата (Markus111 @ 21.06.2012 - 13:41) |
Помогите составить нормальный запрос |
Так ты для начала на словах опиши, что надо получить

Для начала могу предположить, что надо оставить только одну часть из четырех и заменить 'cat="1"' (кстати, зачем тут кавычки ты поставил?) на 'cat IN (1, 2, 3, 4)'. Но не буду утверждать, что это то, что тебе надо - до тех пор, пока ты на словах не озвучишь алгоритм.
Спустя 17 минут, 8 секунд (21.06.2012 - 13:12) Markus111 написал(а):
Существует 4 таблицы, также имеет категорию 1,2,3,4, пятая имеет title,cat каждой с этих таблиц.
Я хочу сделать поиск по title с таблиц.Эти таблицы ENGINE=INNODB, таблица title ENGINE=MyISAM для использования FULLTEXT. Используя таблицу title и объединяя другие таблицы должен работать поиск. Выслушаю ваши предложения по созданию запроса, может другой структуры.
Я хочу сделать поиск по title с таблиц.Эти таблицы ENGINE=INNODB, таблица title ENGINE=MyISAM для использования FULLTEXT. Используя таблицу title и объединяя другие таблицы должен работать поиск. Выслушаю ваши предложения по созданию запроса, может другой структуры.
Спустя 40 минут, 29 секунд (21.06.2012 - 13:52) sergeiss написал(а):
Сорри, "проглядел", что там 4 разные таблицы... Тогда, наверное, по-другому не сделаешь.
Дальше оптимизировать только если по индексам. Может быть, в данном случае и партишены помогут - если данных много. Если же очень много данных, то тогда репликации делать
Дальше оптимизировать только если по индексам. Может быть, в данном случае и партишены помогут - если данных много. Если же очень много данных, то тогда репликации делать

Спустя 6 минут, 38 секунд (21.06.2012 - 13:59) Markus111 написал(а):
Спасибо за попытку sergeiss
_____________
Womans in your town