gpt4 book ai didi

sql - WHERE 和 JOIN 操作顺序

转载 作者:行者123 更新时间:2023-12-03 23:52:48 28 4
gpt4 key购买 nike

我的问题与此类似 SQL order of operations但有一点点扭曲,所以我认为问这个问题是公平的。

我正在使用 Teradata。我有 2 张 table :table1 , table2 .
table1只有一个 id柱子。table2有以下列:id , val
我可能是错的,但我认为这两个陈述给出了相同的结果。

声明 1。

SELECT table1.id, table2.val
FROM table1
INNER JOIN table2
ON table1.id = table2.id
WHERE table2.val<100

声明 2。
SELECT table1.id, table3.val
FROM table1
INNER JOIN (
SELECT *
FROM table2
WHERE val<100
) table3
ON table1.id=table3.id

我的问题是,查询优化器是否足够聪明以
- 先执行 WHERE 子句,然后在语句 1 中稍后执行 JOIN
- 知道在声明 2 中实际上不需要表 3

我对 SQL 很陌生,所以如果我有任何误解,请教育我。

最佳答案

这将取决于很多事情(表大小、索引、键分布等),您应该只检查执行计划:

你不说哪个数据库,但这里有一些方法:
MySql EXPLAIN
SQL Server SET SHOWPLAN_ALL (Transact-SQL)
Oracle EXPLAIN PLAN

what is explain in teradata?
Teradata Capture and compare plans faster with Visual Explain and XML plan logging

关于sql - WHERE 和 JOIN 操作顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3960561/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com