Mysql查询时强制指定索引

在某些情况下,我们给表添加的索引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)来强制指定索引,大家使用的时候还是要结合实际情况来看。

 

 

 


欢迎关注我的个人公众号“笑笑是一个码农”,第一时间获取最新文章。

您的关注,就是支持我持续写作的最大动力!

还可以免费领取前后端全站学习视频资料呦~

个人微信号,如需添加微信,请备注来源,因为妈妈从小就告诉我不要随便跟陌生人聊天!(嘿嘿~)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章