在某些情况下,我们给表添加的索引mysql的优化器并不认为他是高效的,但经过我们使用explain关键字发现,我们自己添加的索引的查询效率要高,这时候,我们就可以使用 FORCE INDEX(index_name)语法来强制指定我们自己创建的某个索引。
示例:
有表如下:
CREATE TABLE `tb_user` (
`id` bigint(20) NOT NULL,
`user_name` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `user_name` (`user_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我们先根据id正常查询,如下:
SELECT id,user_name FROM tb_user WHERE id = 1;
使用explain关键字分析,如下:
EXPLAIN SELECT id,user_name FROM tb_user WHERE id = 1;
可以发现,这次查询我们使用的是主键索引。
我们可以使用FORCE INDEX(index_name)来强制指定索引,如下:
EXPLAIN SELECT id, user_name FROM tb_user FORCE INDEX(user_name) WHERE id = 1
可以看到,我们成功指定了其他索引。
以上的例子不太切合实际,主要是讲怎么使用FORCE INDEX(index_name)来强制指定索引,大家使用的时候还是要结合实际情况来看。
欢迎关注我的个人公众号“笑笑是一个码农”,第一时间获取最新文章。
您的关注,就是支持我持续写作的最大动力!
还可以免费领取前后端全站学习视频资料呦~
个人微信号,如需添加微信,请备注来源,因为妈妈从小就告诉我不要随便跟陌生人聊天!(嘿嘿~)