Недавно я работал над оптимизацией индексов для таблицы mysql, я заметил, что FORCE INDEX
и USE INDEX
почти одинаковые функции, я хотел бы спросить, что их отличает?
Mysql: FORCE INDEX и USE INDEX
Ответ 1
Опубликуйте мои комментарии в качестве ответа:
Если вы используете USE INDEX, вы РЕКОМЕНДУЕТ оптимизатору использовать этот индекс, но он может использовать сканирование таблицы, если оптимизатор считает, что он будет быстрее. Если вы используете FORCE INDEX, тогда вы оптимизируете MAKE для использования этого индекса, даже если он считает, что сканирование таблицы более эффективно. Оптимизатор будет использовать сканирование таблицы, только если нет способа использовать индекс для поиска строк.
Вы также можете использовать FORCE INDEX, который действует как USE INDEX (index_list), но с что сканирование таблицы считается очень дорогостоящим. Другими словами, сканирование таблицы используется только в том случае, если невозможно использовать один из указанных индексов для поиска строк в таблице.