Sql执行顺序

时间:2013-12-06 14:03:48

标签: php mysql sql

我对简单查询感到困惑:

SELECT * FROM table_name WHERE name = 'stack';

我的问题是这部分首先执行:

SELECT * FROM table_name

OR

WHERE name = 'stack'

首先从表中选择所有记录,然后使用WHERE条件进行过滤 首先过滤记录然后SELECT?

有关问题的详细信息,请参阅此链接:

WHERE condition issue in SQL

由于

2 个答案:

答案 0 :(得分:5)

以下步骤显示SELECT语句的逻辑处理顺序或绑定顺序。此顺序确定在一个步骤中定义的对象何时可用于后续步骤中的子句。例如,如果查询处理器可以绑定(访问)FROM子句中定义的表或视图,则这些对象及其列可供所有后续步骤使用。相反,因为SELECT子句是步骤8,所以前面的子句不能引用该子句中定义的任何列别名或派生列。但是,它们可以由后续子句引用,例如ORDER BY子句。请注意,语句的实际物理执行由查询处理器确定,并且顺序可能与此列表不同。

    FROM
    ON
    JOIN
    WHERE
    GROUP BY
    WITH CUBE or WITH ROLLUP
    HAVING
    SELECT
    DISTINCT
    ORDER BY
    TOP

答案 1 :(得分:0)

首先从表中选择所有记录,然后根据指定的条件或条件按顺序过滤。