Mysql文档WHERE子句优化:索引使用的常量表达式只计算一次
索引使用的常量表达式只计算一次。Mysql文档WHERE子句优化:索引使用的常量表达式只计算一次,mysql,Mysql,索引使用的常量表达式只计算一次。 这是什么意思?请给出一个示例优化器可以解析为常量的任何表达式都被解析为常量,而不是针对每一行进行计算 WHERE start_date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) 如果今天运行,该查询将完全等同于此查询 WHERE start_date >= '2018-04-25' …但不只是逻辑上的对等。它将以相同的方式执行,因为表达式DATE_SUBCURDATE,INTERVAL 1 MONTH可以减
这是什么意思?请给出一个示例优化器可以解析为常量的任何表达式都被解析为常量,而不是针对每一行进行计算
WHERE start_date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
如果今天运行,该查询将完全等同于此查询
WHERE start_date >= '2018-04-25'
…但不只是逻辑上的对等。它将以相同的方式执行,因为表达式DATE_SUBCURDATE,INTERVAL 1 MONTH可以减少为常量,优化器在规划查询时会这样做
因此,很容易找到开始日期索引中>='2018-04-25'的行
服务器不会从每行中提取开始日期,然后计算日期,每行间隔1个月,然后比较它们。其中my_column=3*5