在查询语句中表名的后面,添加use index来提供希望mysql去参考的索引列表,就可以让mysql不再考虑其他可用的索引

 

explain select * from rental use index(idx_rental_date)\G;


ignore index


 

如果用户只是单纯地想让mysql忽略一个或者多个索引,则可以使用ingore index;

 

explain select * from rental ingore index(idx_rental_date)\G;

 

force index


 

 

为强制mysql 使用一个特定的索引,可在查询中使用force index.

explain select * from rental where inventory_id > 1\G;

因为rental表中, inventory_id 都是大于1的,mysql会默认进行全表扫描。

 

使用SQL 提示优化sql

 

 

尝试使用use index 的时候,发现mysql还是选择走全表扫描。

 

 explain select * from rental use index(idx_fk_inventory_id) where inventory_id > 1\G;

 

使用SQL 提示优化sql

 

使用force index ,即使使用的效率不是很高,mysql还是会选择使用指定的索引。

 

 explain select * from rental force index(idx_fk_inventory_id) where inventory_id > 1\G;

 

使用SQL 提示优化sql

 

相关文章:

  • 2021-07-19
  • 2021-12-14
  • 2022-12-23
  • 2022-12-23
  • 2021-12-27
  • 2021-08-10
  • 2021-12-19
猜你喜欢
  • 2021-06-17
  • 2022-12-23
  • 2022-02-04
  • 2022-12-23
  • 2022-12-23
  • 2021-07-02
  • 2021-05-10
相关资源
相似解决方案