1、SQL提示使用情景
在使用MySQL时,当一个字段参在于多个索引中时,默认情况下,MySQL会自动选择一个索引,但我们可以指定索引吗?可以忽略某一种索引吗?
答案是可以的。
前提:profession字段已经存在于联合索引之中,且为联合索引的第一个字段。
2、实际操作
(1)MySQL自动选择索引方式
第一步:可以看到profession字段存在于联合索引之中;
第二步:给profession字段创建单列索引;
第三步:通过profession字段的索引进行查询,查看其所使用的,是哪一种索引;
在这一步,可以看到在对profession字段进行索引查询时,其可能用到的索引是联合索引和单列索引,但实际用到的索引是 联合索引。
(2)指定使用的索引类型
在某些业务中,我们需要使用特定的索引类型,可以通过如下语句:
但这种方式存在一个弊端,那就是“你只是建议MySQL使用该索引类型,并未强制其使用该索引类型,MySQL会衡量你的建议,如果你的建议比较有效,那么MySQL会听从你的命令,否则,MySQL会违背你的命令。”
explain select * from tb_user user index(索引名) where profession='软件工程';
(3) 让MySQL忽略某个索引类型
explain select * from tb_user ignore index(索引名) where profession='软件工程';
(4)强制MySQL使用某个索引类型
在前面,我们讨论过建议MySQL使用某个索引类型,这里我们将告诉你,如何强制MySQL使用某个索引类型。
explain select * from tb_user force index(索引名) where profession='软件工程';