在MySQL中从多个表中进行 Select 时,以下两个查询都返回相同的结果集.

其中一个查询的效率是better还是更高?根据我对一个小数据集(每个表中约2k行)的测试,它们都在大约相同的执行时间内返回相同的结果集.

Query 1:

SELECT
    *
FROM
    products,
    product_meta,
    sales_rights
WHERE 
    (
        products.id = product_meta.product_id
        AND products.id = sales_rights.product_id
    )
    AND (...)
LIMIT 0,10;


Query 2:

SELECT
    *
FROM
    products
INNER JOIN product_meta ON products.id = product_meta.product_id
JOIN sales_rights ON product_meta.product_id = sales_rights.product_id 
WHERE
    (...)
LIMIT 0,10;

推荐答案

它们是相同的,但语法不同.所以你不应该期望这两个语法之间有任何性能差异.不过,建议使用最后一种语法(ANS SQL-92语法),有关更多详细信息,请参见以下内容:

Mysql相关问答推荐

在MySQL中存储一条帖子的点赞数量

为什么歌曲详细信息未显示在 Liked.handlebars 视图中?

MySQL:获取连续记录的数量(日期)?

避免多个SQL查询的重构代码

Select 构成每天聚合 MAX 的各个行

看不懂mysql自左连接查询

根据 JOIN 结果计算列中的值?

生成直到 10 的平方数序列

Mysql如何分行分词

当mysql中只有一个索引列时,为什么使用范围条件锁定读取会锁定每条记录?

使用 autocommit = 0 和 InnoDB 表的 LOCK TABLES 检测死锁

MySql,如何从列中替换某种格式的字符串

如何将内置的时间浏览器过滤器反映到 Grafana 中的 mysql 查询中?

查询以从约会表中获取可用空档

MYSQL LOAD DATA INFILE 语句适用于工作台,但不适用于 python

这是将表单数据插入 MySQL 数据库的安全方法吗?

phpmyadmin没有收到要导入的数据错误,如何解决?

MySQL中的行值增加和减少1

如何将 MySQL 查询结果存储在另一个表中?

将 UTF8 表上的 latin1 字符转换为 UTF8