Mysql where条件下的执行顺序
在Mysql where条件下的执行顺序,mysql,sql,Mysql,Sql,在where子句中首先执行哪个条件 即: 首先检查性别,如果满足,然后检查(职位='manager'或婚姻状况='m') 或者它执行(职务='manager'或婚姻状况='m'),然后检查性别 通常,SQL中不会建立表达式的求值顺序 数据库引擎可以自由地按任何顺序进行计算,因为它们可以自由地优化查询。例如: 如果表中有一个关于job\u title的索引,引擎可以首先使用job\u title作为“访问”,然后使用婚姻状况和性别作为“过滤” 或者,如果表中有关于性别的索引,则引擎可以首先使用
where
子句中首先执行哪个条件
即:
- 首先检查性别,如果满足,然后检查
(职位='manager'或婚姻状况='m')
- 或者它执行
,然后检查性别(职务='manager'或婚姻状况='m')
- 如果表中有一个关于
的索引,引擎可以首先使用job\u title
作为“访问”,然后使用job\u title
和婚姻状况
作为“过滤”性别
- 或者,如果表中有关于
性别的索引,则引擎可以首先使用
性别
作为“访问”,然后使用
婚姻状况
和
职务
作为“筛选”
有时我们想知道表达式求值的顺序,特别是对于短路布尔条件。这在SQL(一种声明性语言)中不起作用,就像在命令式语言(Java、PHP、C#等)中一样。一般来说,表达式的求值顺序在SQL中不确定 数据库引擎可以自由地按任何顺序进行计算,因为它们可以自由地优化查询。例如:
- 如果表中有一个关于
的索引,引擎可以首先使用job\u title
作为“访问”,然后使用job\u title
和婚姻状况
作为“过滤”性别
- 或者,如果表中有关于
性别的索引,则引擎可以首先使用
性别
作为“访问”,然后使用
婚姻状况
和
职务
作为“筛选”
有时我们想知道表达式求值的顺序,特别是对于短路布尔条件。这在SQL(一种声明性语言)中不起作用,就像在命令式语言(Java、PHP、C#等)中一样。可能的重复你能提供一些样本数据并期望结果吗?可能的重复你能提供一些样本数据并期望结果吗?可能的重复真实答案是。。。这取决于MySQL查询优化器决定做什么。。。这取决于MySQL查询优化器决定做什么。
Select * from tableA
Where gender=‘m’ and (job title = ‘manager’ or marital_status=‘m’)