3.5. Примеры стандартных запросов
3.5.7. Поиск по двум ключам
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 ».
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|