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万。测试输出:欢迎分享,转载请注明来源:内存溢出
评论列表(0条)