Есть у нас такая мега супер хрень как EAV. Объяснять не буду, но кратко скажу, что есть таблица объектов, таблица описания свойств объектов и таблица в которой хранятся значения свойств объектов. При поиске по значениям свойств объектов, тобишь по последней таблице в EAV есть одна хуйня. В лучшем случае - сколько критериев поиска - столько добавляется в запрос конструкций типа LEFT JOIN. Например:
LEFT JOIN objvals ov ON (ov.object_id = o.id AND ov.prop_id = 4)
И так для каждого свойства по которому идёт поиск.
Такие запросы могут сильно нагружать мускул и он может отваливаться нафиг так что скрипт и в кешь ничего не успевает положить.
Посему у меня ряд вопросов к вышеупомянутым гражданам.
1. Как лучше поставить индексы?
2. Какой движок таблиц лучше юзать?
3. Так как это поиск то вполне нормально могут прибавиться SQL_CALC_FOUND_ROWS и LIMIT. Может надо разбивать на два запроса где один с count() или как то обойтись без лимита.
4. На сколько SQL_CALC_FOUND_ROWS и LIMIT грузят мускул в данном случае, может виноваты они или один из них, а не куча LEFT JOIN?
Заранее благодарю