MySQL指定使用索引(使用索引提示)
也叫index hint
可以看到官方文档中,BNF如下:
index_hint_list:
index_hint [index_hint] ...
index_hint:
USE {INDEX|KEY}
[FOR {JOIN|ORDER BY|GROUP BY}] ([index_list])
| {IGNORE|FORCE} {INDEX|KEY}
[FOR {JOIN|ORDER BY|GROUP BY}] (index_list)
index_list:
index_name [, index_name] ...)
也就是说,指定索引的时候,可以同时指定多个,但是MySQL一定只会在指定的索引中选一个使用,所以一定要考虑清楚SQL语句是否 能利用上索引:
UPDATE xxx_table USE INDEX (index_a, index_b) SET updated_at='2019-09-25 00:00:00' where xxx
与之相反的使用,是 IGNORE INDEX (index_a, index_b)
这会告诉MySQL,避免使用这几个索引。
使用索引还有一种用法,那就是使用 FORCE INDEX
,与 USE INDEX
的区别在于,这会告诉MySQL,扫表的代价非常昂贵,因此,除非
用不到索引,否则MySQL一定不会扫表,至少会用到其中提供的一个索引。
参考资料:
更多文章
本站热门
- socks5 协议详解
- zerotier简明教程
- 搞定面试中的系统设计题
- 用peewee代替SQLAlchemy
- frp 源码阅读与分析(一):流程和概念
- Golang(Go语言)中实现典型的fork调用
- DNSCrypt简明教程
- 一个Gunicorn worker数量引发的血案
- Golang validator使用教程
- Docker组件介绍(一):runc和containerd
- Docker组件介绍(二):shim, docker-init和docker-proxy
- 使用Go语言实现一个异步任务框架
- 协程(coroutine)简介 - 什么是协程?
- SQLAlchemy简明教程
- Go Module 简明教程