mysql - 通过首先将相关行选择到别名表中来更快地加入?

标签 mysql

我在 SO 上读到 joinwhere 之前执行,所以我想知道像这样执行连接是否(总是)是个好主意:

SELECT * FROM 
    (SELECT * FROM tbl_1 WHERE field = 'the_value') t
    JOIN tbl_2 USING (joinable_field)

而不是通常的

SELECT * FROM tbl_1 t1 JOIN tbl_2 t2 USING (joinable_field)
WHERE t1.field = 'the_value'

最佳答案

这样,您就可以限制执行和评估顺序。 t 必须首先创建(可能是“即时”,可能物理上在磁盘上),并且加入 tbl_2

但是,在您的具体情况下,这应该不会有什么坏处。但我也看不到任何好处。

关于mysql - 通过首先将相关行选择到别名表中来更快地加入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9411314/

相关文章:

mysql - 省略前 5 行?

php - SQL IS NOT NULL 作为 CASE 语句中的值

php - 使用 PHP 和 MYSQL 上传信息时不需要我的表单字段

php - 将 'check username' 添加到注册表 PHP

mysql - SQL 中的保留群组查询

php - 子查询返回多于 1 行 - 如何获取一行的最后更新日期?

mysql - 如何用SQL统计内容

Mysql - 存储了多个不正确的日期格式

mysql - 如何抑制 MySQL 错误?

当第二个表添加到查询时,MySQL 日期范围索引被忽略