使用SQL 提示优化sql
2017-06-29 17:29
573 查看
use index
在查询语句中表名的后面,添加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会默认进行全表扫描。
尝试使用use index 的时候,发现mysql还是选择走全表扫描。
explain select * from rental use index(idx_fk_inventory_id) where inventory_id > 1\G;
使用force index ,即使使用的效率不是很高,mysql还是会选择使用指定的索引。
explain select * from rental force index(idx_fk_inventory_id) where inventory_id > 1\G;
相关文章推荐
- SQL优化:使用查询提示
- 优化PL/SQL过程调用,使用NOCOPY提示
- Oracle SQL优化之使用索引提示一例
- SQL hint中正确使用use_nl提示
- SQL 语句优化--中间表的使用优化
- SQL 优化提示
- 使用WHERE语句对SQL进行基础性的优化
- SQL优化-索引 (四)其他书上没有的索引使用经验总结
- SQL Server查询优化之:使用提示(Hints)
- ORACLE hint提示优化SQL
- SQL优化-索引 (二)结合实际,谈索引使用的误区
- SQL优化--使用 EXISTS 代替 IN 和 inner join来选择正确的执行计划
- SQL语句中的优化提示Hints的总结
- [翻译]使用SQL Server 优化提示
- 使用hint优化 Oracle SQL语句方法
- [MSSQL]SQL语句优化- while循环使用
- ORACLE如何在有视图的SQL中使用hint(提示)来设置视图内的SQL查询方式
- ASP.NET优化连载(三)只读数据访问用SqlDataReader,不要使用DataSet
- SQL优化--使用 EXISTS 代替 IN 和 inner join来选择正确的执行计划
- 解决SQL备份时,提示"不是多簇媒体集的一部分,可以使用BACKUP WITH FORMAT 来构造新的媒体集."