Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql文档WHERE子句优化:索引使用的常量表达式只计算一次_Mysql - Fatal编程技术网

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