Вместо Solr советую использовать ElasticSearch. Оба они пострены на Lucene, но в эластике намного лучше обстоят дела со скоростью добавления, изменения документов в индексе + шардинг из коробки. Работал с обоими системами, даже субъективно у эластика более user-friendly язык запросов
ab на самом деле очень часто грешит неверностью результатов, намного лучше с бенчмарком веб-сервера справляется siege, кроме того, в нем присутствует возможность очень гибкой настройки, что порой, для сложного динамичного сайта является критичным
select users_from.login as login_from, users_to.login as login_to…
LEFT JOIN users as users_from ON users_from.user_id = messages.message_from,
LEFT JOIN users as users_to ON users_to.user_id = messages.message_to,
примерно так (SELECT value1 FROM table WHERE status = 1) UNION (SELECT value2 FROM table WHERE status = 2)
Написал на скорую руку, могу ошибатся… если скинете дамп данных — помогу точнее:)
Для хайлоада желательно использовать чистые SQL запросы. Конечно небольшая прослойка для удобства нужна… аля $this->db->query(); $this->db->escape()… Но все что больше — лишнее. И вообще в высоконагруженных проектах лучше отказаться от мускуля)