在 MySQL 中强制使用索引进行连接的语法是啥

Posted

技术标签:

【中文标题】在 MySQL 中强制使用索引进行连接的语法是啥【英文标题】:What is the syntax to force the use of an index for a join in MySQL在 MySQL 中强制使用索引进行连接的语法是什么 【发布时间】:2010-11-19 08:00:43 【问题描述】:

在进行直接选择时使用“FORCE/USE/IGNORE INDEX”已有详细记录,但从文档中不清楚如何为 JOIN 执行此操作。

如何强制将特定索引用于连接表?

【问题讨论】:

您是否刚刚提出问题并在 1 分钟后以第二人称回答? (我知道,我知道现在已经 6 年了,我只是好奇) @karatedog:是的,我花了很长时间试图找到答案,所以想在某个地方记录下来。认为在这里会有所帮助。 【参考方案1】:

FORCE/USE/IGNORE 位于您要加入的表名之后,如果您使用的是别名,则位于别名之后。

SELECT
  t1.`id` AS `id_1`,
  t2.`id` AS `id_2`
FROM
  `table1` t1
LEFT OUTER JOIN
  `table2` t2
  FORCE INDEX FOR JOIN (`table1_id`)
  ON (t2.`table1_id` = t1.`id`)

【讨论】:

怎么样 SELECT t1.id AS id_1, t2.id AS id_2 FROM table1 t1 LEFT JOIN table2 t2 GROUP BY 并强制使用组索引? 文档(现在更容易找到)在显示所有可用选项方面做得非常好:dev.mysql.com/doc/refman/5.6/en/index-hints.html

以上是关于在 MySQL 中强制使用索引进行连接的语法是啥的主要内容,如果未能解决你的问题,请参考以下文章

MySQL force Index 强制索引概述

mysql强制使用索引

mysql 学习 - 掌握单表查询优化

Mysql之索引的基本概念语法

MYSQL中常用的强制性操作(例如强制索引)

解释mysql中啥是索引?它的作用是啥?