mysql hint优化器提示之使用force index 强制使用索引和指定禁用索引

mysql hint优化器提示之使用force index 强制使用索引和指定禁用索引,第1张

1、mysql强制使用主键索引

2、强制指定一个特定索引

3、同时指定两个

4、在多个表join中强制使用索引

select * from table ignore index(PRI) limit 2(禁止使用主键)

select * from table ignore index(idx) limit 2(禁止使用索引”idx”)

select * from table ignore index(PRI,idx) limit 2(禁止使用索引”PRI,idx”)

force index 不建议使用,如果数据量有变化,指定的索引可能不是最佳的

各位顺道可参考下这篇文章测试过程中没想到同样的一条sql语句仅仅是增加了force index后查询速度几乎快了一倍。select count(*) from http_log_3 force index(time) where time = 000000�0�2�0�2�0�2 //1 row in set (11 min 19.35 sec)select count(*) from http_log_3 where time = 000000�0�2�0�2�0�2 //1 row in set (20 min 5.86 sec)但实际上通过explain分析可知其实这两条sql语句使用的都是time索引,完全一样!在这个特例当中使用force index(time)后影响的并不是索引key的选择(优化器默认也使用time索引),而是type及rows.数据库 mysql 5.1.34,innodb引擎,使用innodb_file_per_table选项。使用表分区方式创建数据表(按日分区共十个),表中一共有5000万数据,即每个分区各500万。测试输出:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6168295.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存