Нет, это не сработает.Это из-за «архитектуры» sphinxSE / mysql.
Sphinx, конечно, не представляет реальные таблицы в MySQL.Он притворяется своим столом.Он говорит, что оптимизатор запросов mysql очень хорошо работает через индексы.Поэтому оптимизатор всегда должен выбирать таблицу SphinxSE «сначала», которая затем соединяется с реальной таблицей mysql.
Таким образом, для каждой строки выполняется сканирование индекса для таблицы SphinxSE, которая получает doc_ids.и затем он ищет их в исходной таблице (само соединение).
SphinxSE не может существовать с правой стороны соединения.Всегда должен быть первым (или оставленным).
... ваш запрос (с использованием левого соединения) заставляет mysql поместить таблицу sphinxSE (ну и таблицы не меньше!) Справа, которая просто не будет работать.
Вам нужно преобразовать запрос в одну таблицу sphinxSE.Таблица sphinxSE может искать несколько индексов sphinx одновременно.Или, может быть, можно изменить ваши фактические индексы так, чтобы они составляли один индекс.
Помните, что для каждого индекса может быть несколько полей - поэтому может быть использован расширенный запрос
(@ field1 "какое-то случайное имя ") |(@ field2 "какое-то случайное имя")
... результат одной таблицы sphinxSE (слева от объединения :)).
Обновлено для добавления:
Создание sphinxSE для поиска по двум индексам одновременно (например, sql UNION) почти наверняка вы можете сделать
CREATE TABLE ... CONNECTION="sphinx://localhost:9312/index1,index2";
, но дажеесли вы не можете, переопределение во время запроса должно определенно сработать, например из документов:
... WHERE query='test;index=test1,test2,test3;';
Индекс, определенный в таблице, будет игнорироваться, поэтому можно использовать любую таблицу sphinxSE.