MySQL пока не осуществляет оптимизации, если поиск производится по двум
        различным ключам, которые связаны при помощи оператора OR (поиск по одному
        ключу с различными частями OR  оптимизируется хорошо):
      
SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1' OR field2_index = '1'
        Причина заключается в том, что у нас не было времени, чтобы придумать
        эффективный способ обработки этого случая (сравните: обработка оператора
        AND теперь работает хорошо)
      
В настоящее время данную проблему очень эффективно можно решить при помощи временной таблицы. Этот способ оптимизации также хорошо подходит, если вы запускаете очень сложные запросы, когда SQL-сервер делает оптимизацию в неправильном порядке.
CREATE TEMPORARY TABLE tmp SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1'; INSERT INTO tmp SELECT field1_index, field2_index FROM test_table WHERE field2_index = '1'; SELECT * from tmp; DROP TABLE tmp;
        Вышеупомянутый способ выполнения этого запроса - это фактически UNION
        (объединение) двух запросов. See Раздел 6.4.1.2, «Синтаксис оператора  UNION».
      




 
 
