gpt4 book ai didi

mysql - where条件下的执行顺序

转载 作者:行者123 更新时间:2023-11-29 06:39:40 34 4
gpt4 key购买 nike

Select * from tableA
Where gender=‘m’ and (job title = ‘manager’ or marital_status=‘m’)

where 子句中哪个条件将首先执行?

即:

  • 首先检查性别,如果满足,则检查(job title = ‘manager’ or marital_status=‘m’)
  • 或者执行(job title = ‘manager’ or marital_status=‘m’),然后检查性别。

最佳答案

一般来说,SQL 中没有建立表达式的求值顺序。

数据库引擎可以自由地以任何顺序进行评估,因为它们可以自由地优化查询。例如:

  • 如果表在 job_title 上有索引,引擎可能首先使用 job_title 作为“访问”,并且>然后使用marital_statusgender作为“过滤”。

  • 或者,如果表有关于gender的索引,引擎可能FIRST使用gender作为“访问”并且< strong>THEN使用marital_statusjob_title作为“过滤”。

你清楚看到访问和过滤之间的区别了吗?所有引擎都需要一个“访问谓词”来检索数据,然后使用“过滤谓词”来选择要返回哪些行。

有时我们想知道表达式求值的顺序,特别是短路 bool 条件。这在 SQL(一种声明性语言)中不起作用,而在命令式语言(Java、PHP、C# 等)中却不起作用

关于mysql - where条件下的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52339422/

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