Pesquisando em Duas Chaves
O MariaDB 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 MariaDB e acimo, você pode solucionar este problema eficientemente usando um UNION que combina a saída de duas instruções SELECT separadas. Leia "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 MariaDB 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.