极光资源网:整合微商/抖音/淘宝开店运营教程,创业项目,AI工具与办公工具资源,助力高效选品运营。

MySQL多表查询方法,多表查询速度慢的原因及解决方法

发布人员:曦阳SEO 所属分类:建站教程 浏览量:4 原创

在关系型数据库中,表与表之间是有联系的,所以在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。

问题:Mysql多表查询速度很慢,是由于字段字符集规则不一致所导致。比如被关联的两个表字符集规则不一致,一个是utf8_general_ci,另一个是utf8mb4_0900_AI_ci。解决方法:一个字段一个字段的改,把两个表字段的字符集规则都统一成了utf8_general_ci格式。

MySQL多表查询方法,多表查询速度慢的原因及解决方法-第1张图片

在 MySQL 中,多表查询主要有交叉连接、内连接和外连接。

MySQL 交叉连接

交叉连接(CROSS JOIN)一般用来返回连接表的笛卡尔积。

交叉连接的语法格式如下:

SELECT <字段名> FROM <表1> CROSS JOIN <表2> [WHERE子句]

或者:

SELECT <字段名> FROM <表1>, <表2> [WHERE子句]

语法说明如下:

1、字段名:需要查询的字段名称。

2、<表1><表2>:需要交叉连接的表名。

3、WHERE 子句:用来设置交叉连接的查询条件。

注意:多个表交叉连接时,在 FROM 后连续使用 CROSS JOIN 或,即可。以上两种语法的返回结果是相同的,但是第一种语法才是官方建议的标准写法。

当连接的表之间没有关系时,我们会省略掉 WHERE 子句,这时返回结果就是两个表的笛卡尔积,返回结果数量就是两个表的数据行相乘。需要注意的是,如果每个表有 1000 行,那么返回结果的数量就有 1000×1000 = 1000000 行,数据量是非常巨大的。

MySQL 内连接

内连接(INNER JOIN)主要通过设置连接条件的方式,来移除查询结果中某些数据行的交叉连接。简单来说,就是利用条件表达式来消除交叉连接的某些数据行。[文]

内连接使用 INNER JOIN 关键字连接两张表,并使用 ON 子句来设置连接条件。如果没有连接条件,INNER JOIN 和 CROSS JOIN 在语法上是等同的,两者可以互换。

内连接的语法格式如下:

SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]

语法说明如下:

1、字段名:需要查询的字段名称。

2、<表1><表2>:需要内连接的表名。

3、INNER JOIN :内连接中可以省略 INNER 关键字,只用关键字 JOIN。

4、ON 子句:用来设置内连接的连接条件。

INNER JOIN 也可以使用 WHERE 子句指定连接条件,但是 INNER JOIN ... ON 语法是官方的标准写法,而且 WHERE 子句在某些时候会影响查询的性能。

多个表内连接时,在 FROM 后连续使用 INNER JOIN 或 JOIN 即可。

内连接可以查询两个或两个以上的表。

MySQL 外连接

内连接的查询结果都是符合连接条件的记录,而外连接会先将连接的表分为基表和参考表,再以基表为依据返回满足和不满足条件的记录。

外连接可以分为左外连接和右外连接,下面根据实例分别介绍左外连接和右外连接。

左连接

左外连接又称为左连接,使用 LEFT OUTER JOIN 关键字连接两个表,并使用 ON 子句来设置连接条件。

左连接的语法格式如下:

SELECT <字段名> FROM <表1> LEFT OUTER JOIN <表2> <ON子句>

语法说明如下。

1、字段名:需要查询的字段名称。

2、<表1><表2>:需要左连接的表名。

3、LEFT OUTER JOIN:左连接中可以省略 OUTER 关键字,只使用关键字 LEFT JOIN。

4、ON 子句:用来设置左连接的连接条件,不能省略。

上述语法中,“表1”为基表,“表2”为参考表。左连接查询时,可以查询出“表1”中的所有记录和“表2”中匹配连接条件的记录。如果“表1[章]”的某行在“表2”中没有匹配行,那么在返回结果中,“表2”的字段值均为空值(NULL)。

右连接

右外连接又称为右连接,右连接是左连接的反向连接。使用 RIGHT OUTER JOIN 关键字连接两个表,并使用 ON 子句来设置连接条件。

右连接的语法格式如下:

SELECT <字段名> FROM <表1> RIGHT OUTER JOIN <表2> <ON子句>

语法说明如下。

1、字段名:需要查询的字段名称。

2、<表1><表2>:需要右连接的表名。

3、RIGHT OUTER JOIN:右连接中可以省略 OUTER 关键字,只使用关键字 RIGHT JOIN。

4、ON 子句:用来设置右连接的连接条件,不能省略。

与左连接相反,右连接以“表2”为基表,“表1”为参考表。右连接查询时,可以查询出“表2”中的所有记录和“表1”中匹配连接条件的记录。如果“表2”的某行在“表1”中没有匹配行,那么在返回结果中,“表1”的字段值均为空值(NULL)。

以上就是MySQL多表查询方法,多表查询速度慢的原因及解决方法的全部内容了,希望能够帮助到你,找建站教程记得来极光资源网!

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

同类推荐
小姐姐视频
  • 最新文章

  • 热评文章

  • 热门文章

标签列表
日历
«    2025年8月    »
123
45678910
11121314151617
18192021222324
25262728293031
文章归档