Индексы являются необязательными в MySQL, но они могут повысить производительность.
В настоящее время MySQL может использовать только один индекс на выбор таблицы, поэтому с данным запросом, если у вас есть индекс как для column1, так и для column2,MySQL попытается определить индекс, который будет наиболее выгодным, и использовать только один.
Общее решение, если скорость выбора имеет первостепенное значение, состоит в создании многостолбцового индекса, который включает в себяоба столбца.
Таким образом, несмотря на то, что MySQL может использовать только один индекс для таблицы, он будет использовать многостолбцовый индекс, в котором индексированы оба столбца, что позволяет MySQL быстро фильтровать оба критерия в предложении WHERE..
В многостолбцовом индексе вы бы сначала поместили столбец с наибольшим количеством элементов (наибольшее количество различных значений).
Для еще большей оптимизации "покрытие"в некоторых случаях могут применяться индексы .
Обратите внимание, что индексы могут повысить производительность, но с некоторыми затратами.Индексы увеличивают требования к памяти и памяти.Кроме того, при обновлении или вставке записей в таблицу соответствующие индексы требуют обслуживания.Все эти факторы должны учитываться при реализации индексов.
Обновление: Теперь MySQL 5.0 может использовать индекс для нескольких столбцов, объединяя результаты каждого индекса с несколькими предостережениями.
Следующий запрос является хорошим кандидатом для Оптимизация слияния индексов :
SELECT * FROM t1 WHERE key1=1 AND key2=1