假设有一个 user_profile 表有 10000 条记录,一半的记录是女性用户(= 5000 个女性用户)。
如果我发送查询“ select age(birth) from user_profile where sex = 'female'”
年龄函数将执行多少次?5000 次还是 10000 次?
假设有一个 user_profile 表有 10000 条记录,一半的记录是女性用户(= 5000 个女性用户)。
如果我发送查询“ select age(birth) from user_profile where sex = 'female'”
年龄函数将执行多少次?5000 次还是 10000 次?
5000 次。WHERE 子句消除了所有不匹配 'female' 的内容,并在剩余的结果上调用该函数。
执行顺序为
如您所见,一半的结果将在 WHERE 中消除,当 SELECT 完成时,您将有 5000 条记录。
取决于数据库的实现。请记住 SQL 是 ANSI 标准而不是产品。该标准仅指定输入(您的 sql 语句)和输出。
对于大多数数据库来说,这将是 5000 倍,因为在不需要的行上浪费计算能力是愚蠢的。
它首先进行选择(where 子句),然后是投影(您的 select 子句)。