0

假设有一个 user_profile 表有 10000 条记录,一半的记录是女性用户(= 5000 个女性用户)。

如果我发送查询“ select age(birth) from user_profile where sex = 'female'”

年龄函数将执行多少次?5000 次还是 10000 次?

4

2 回答 2

1

5000 次。WHERE 子句消除了所有不匹配 'female' 的内容,并在剩余的结果上调用该函数。

执行顺序为

  1. 在哪里
  2. 通过...分组
  3. 拥有
  4. 选择
  5. 订购方式

如您所见,一半的结果将在 WHERE 中消除,当 SELECT 完成时,您将有 5000 条记录。

于 2013-09-06T03:20:06.030 回答
1

取决于数据库的实现。请记住 SQL 是 ANSI 标准而不是产品。该标准仅指定输入(您的 sql 语句)和输出。

对于大多数数据库来说,这将是 5000 倍,因为在不需要的行上浪费计算能力是愚蠢的。

它首先进行选择(where 子句),然后是投影(您的 select 子句)。

于 2013-09-06T03:21:54.070 回答