O MySQL ainda não otimiza quando você pesquisa em duas chaves
        diferentes combinadas com OR (Pesquisa em uma
        chave com diferentes partes OR é muito bem
        otimizadas).
      
SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1' OR field2_index = '1'
        A razão é que nós ainda não tivemos tempos para fazer este
        tratamento de uma maneira eficiente no caso geral. (A
        manipulação do AND é, em comparação,
        completamente geral e funciona muito bem).
      
        No MySQL 4.0 e acimo, você pode solucionar este problema
        eficientemente usando um UNION que combina a
        saída de duas instruções SELECT separadas.
        See Secção 6.4.1.2, “Sintaxe UNION”. Cada SELECT
        busca apenas uma chave e pode ser otimizada.
      
SELECT field1_index, field2_index FROM test_table WHERE field1_index = '1' UNION SELECT field1_index, field2_index FROM test_table WHERE field2_index = '1';
        Em versões do MySQL anteirores a 4.0, você pode conseguir o
        mesmo efeito usando uma tabela TEMPORARY e
        instruções SELECT separadas. Este tipo de
        otimização também é muito boa se você estiver utilizando
        consultas muito complicadas no qual o servidor SQL faz as
        otimizações na ordem errada.
      
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;
        A maneira descrita acima para resolver esta consulta é uma
        união (UNION) de duas consultas.
      
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

