首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当where语句中的日期发生变化时,MySQL EXPLAIN'type'会从'range'变为'ref'吗?

当where语句中的日期发生变化时,MySQL EXPLAIN的'type'可能会从'range'变为'ref',也可能不会发生变化。这取决于查询优化器如何选择执行查询的方式。

在MySQL中,EXPLAIN用于显示查询的执行计划,包括表的访问顺序、连接类型、存储引擎操作等信息。'type'列表示连接类型,它可以是'system'、'const'、'eq_ref'、'ref'、'range'、'index'、'ALL'等。

当'type'为'range'时,表示在索引中查找满足某个范围条件的记录。当'type'为'ref'时,表示在索引中查找某个特定值的记录。

当where语句中的日期发生变化时,查询优化器可能会选择不同的索引来执行查询,从而导致'type'的变化。例如,如果原来的查询可以使用索引范围查找,而新的查询可以使用索引引用查找,那么'type'就会从'range'变为'ref'。

需要注意的是,'type'的变化不一定会影响查询的性能。在实际应用中,需要根据查询的具体情况和查询计划来选择合适的索引和查询方式,以提高查询性能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

终于踩到了慢查询

否则,内层select语句一般顺序编号,对应于其在原始语句中位置 select_type 显示本行是简单或复杂select。...type显示是访问类型,是较为重要一个指标,结果值好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge...使用=、 、>、>=、、BETWEEN 或者 IN 操作符,用常量比较关键字列,可以使用 range ref 一种索引访问,它返回所有匹配某个单个值行。...主键放入where子句mysql把这个查询转为一个常量(高效) system 这是const连接类型一种特例,表仅有一行满足条件。...Null 意味说mysql能在优化阶段分解查询语句,在执行阶段甚至用不到访问表或索引(高效) 出现慢查询原因 在where句中使用了函数操作 出现慢查询sql语句中使用了unix_timestamp

2K30

MySQL 数据库规范--开发篇

4.一般情况下update,delete 语句中不要使用limit。 5.where 条件语句中必须使用合适类型,避免mysql进行隐式转换。...2.不同版本MySQL 优化器各有不同,一些优化规则随着版本发展可能有变化, 查询执行计划随着数据变化也可能发生变化,这类情况就需要使用explain 来验证自己判断。...type:最有价值信息之一 type表示 MySQL 在表中找到所需行方式,又称为“访问类型”,常见类型如下所示: all、index、rangeref、eqref、const,system,null...const、system:MySQL对查询某部分进行优化,并转化为一个常量,可使用这些类型进行访问。...如果主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const 一个特例,查询表只有一行情况下,即可使用system。

1.6K20
  • mysql分区函数_mysql 分区可用函数

    如果为空,没有可能索引。可以为相关WHERE句中选择一个合适语句 3 key:实际使用索引。如果为NULL,则没有使用索引。...在不损失精确性情况下,长度越短越好 5 ref:显示索引哪一列被使用了,如果可能的话,是一个常数 6 rows:MySQL认为必须检索用来返回请求数据行数 7 type:这是最重要字段之一,显示查询使用了何种类型...最好到最差连接类型为system、const、eq_reg、refrange、index和ALL system、const:可以将查询变量转为常量....如id=1; id为 主键或唯一键. eq_ref:访问索引,返回某单一行数据.(通常在联接出现,查询使用索引为主键或惟一键) ref:访问索引,返回某个值数据....(使用order by v1,而没用到索引,就会使用额外排序) range checked for eache record(index map:N):没有好索引.

    5.8K10

    MySQL性能分析和索引优化

    key 列显示使用了哪个索引 > 一般就是在你where句中出现了between、、in等查询 > 这种范围扫描索引扫描比全表扫描要好,因为它只需要开始于索引某一点,而结束另一点,不用扫描全部索引...子查询中唯一索引 > > ```mysql EXPLAIN SELECT * FROM t_emp; **一般来说,过百万数据量,得保证查询至少达到range级别,最好能达到ref。...字段在联合索引里处于中间位置,因 comments>1条件是一个范围值(所谓 range) MySQL无法利用索引再对后面的vews部分进行检索,即range类型查询字段后面的索引无效 继续优化 删除之前索引...article(category\_id,views); ``` 继续分析SQL语句 [image-20211004134822202] typerange索引范围扫描优化到ref索引多行扫描...DROP INDEX idx_book_classid ON book; 继续分析 [image-20211004142819428] 可以看到建立右表索引第二行typeref r ows

    1.4K00

    技术分享 | EXPLAIN 执行计划详解(1)

    SIMPLE 查询语句中不包含 UNION 或者子查询查询都算作是 SIMPLE 类型,比方说下边这个单表查询 select_type 值就是 SIMPLE: mysql> explain select...type type 显示是访问类型,是较为重要一个指标,结果值好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge...通过普通二级索引列与常量进行等值匹配,那么对该表访问方法就是 ref,即使匹配到值可能是多行,举例: mysql> explain select * from t11 where a=100...对普通二级索引进行等值匹配查询,该索引列值也可以是 NULL 值,那么对该表访问方法就可能是 ref_or_null,举例: mysql> explain select * from t11...ref 使用索引列等值匹配条件去执行查询,也就是在访问方法是 const、eq_refrefref_or_null、unique_subquery、index_subquery 其中之一ref

    2.5K10

    扣绩效篇 | 终于踩到了SQL慢查询坑!

    执行计划中慢查询和快查询唯一区别就是type不一样:慢查询中type为index,快查询中typerange。 step4....通过给查询数据加10s缓存,响应速度最快平均为20ms explain使用介绍 通过explain,可以查看sql语句执行情况(比如查询表,使用索引以及mysql在表中找到所需行方式等) 用explain...type显示是访问类型,是较为重要一个指标,结果值好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge...出现慢查询原因 在where句中使用了函数操作 出现慢查询sql语句中使用了unix_timestamp函数统计出自'1970-01-01 00:00:00'到当前时间秒数差。...对于需要计算值最好通过程序计算好传入而不是在sql语句中做计算,比如这个sql中我们将当前日期和七天前日期计算好传入 后记 这个问题当时在测试环境没有发现,测试环境请求速度还是可以

    64540

    Mysql优化大师三」查询执行计划explain详解,含案例

    actually chosen DERIVED 包含在from子句中子查询,mysql递归执行并将结果放在一个临时表中。...from子句中有子查询或UNION,table列复杂多。在这些场景中,确实没有一个表可以参考到,因为mysql创建匿名临时表仅在查询执行过程中存在。...type type显示是访问类型,访问类型表示我是以何种方式去访问我们数据,最容易想是全表扫描,直接暴力遍历一张表去寻找需要数据,效率非常低下,访问类型有很多,效率最好到最坏依次是: system...然后,它可能找到多个符合条件行,因此,它是查找和扫描混合体。此类索引访问只有当使用非唯一索引或唯一索引非唯一前缀才发生。...ename; --using index:这个表示当前查询覆盖索引,直接索引中读取数据,而不用访问数据表。

    1.1K10

    SQL必知必会:Explain 执行计划

    Explain有什么用 Explain 与 SQL 语句一起使用时,MySQL 显示来自优化器关于 SQL 执行信息。...ref_or_null:这种连接类型类似于 ref,区别在于MySQL额外搜索包含NULL值行。...简单点说就是针对一个有索引字段,给定范围检索数据。在where句中使用bettween...and、 、<=、in等条件查询type都是range。...type为index_merge,可能显示多个索引。 八、key_len key_len:表示查询用到索引长度(字节数),原则上长度越短越好 。...使用常量等值查询,显示const, 当关联查询显示相应关联表关联字段 如果查询条件使用了表达式、函数,或者条件列发生内部隐式转换,可能显示为func 其他情况null 十、rows rows:

    34060

    不会看 Explain执行计划,劝你简历别写熟悉 SQL优化

    哭唧唧~ [在这里插入图片描述] Explain有什么用 Explain 与 SQL语句一起使用时,MySQL 显示来自优化器关于SQL执行信息。...ref_or_null:这种连接类型类似于 ref,区别在于 MySQL额外搜索包含NULL值行。...简单点说就是针对一个有索引字段,给定范围检索数据。在where句中使用 bettween...and、、<=、in 等条件查询 type 都是 range。... type 为 index_merge ,可能显示多个索引。 八、key_len key_len:表示查询用到索引长度(字节数),原则上长度越短越好 。...使用常量等值查询,显示const, 当关联查询显示相应关联表关联字段 如果查询条件使用了表达式、函数,或者条件列发生内部隐式转换,可能显示为func 其他情况null十、rowsrows:以表统计信息和索引使用情况

    82020

    面试官:不会看 Explain执行计划,简历敢写 SQL 优化?

    Explain有什么用 Explain 与 SQL语句一起使用时,MySQL 显示来自优化器关于SQL执行信息。...ref_or_null:这种连接类型类似于 ref,区别在于 MySQL额外搜索包含NULL值行。...简单点说就是针对一个有索引字段,给定范围检索数据。在where句中使用 bettween...and、、<=、in 等条件查询 type 都是 range。... type 为 index_merge ,可能显示多个索引。 八、key_len key_len:表示查询用到索引长度(字节数),原则上长度越短越好 。...使用常量等值查询,显示const, 当关联查询显示相应关联表关联字段 如果查询条件使用了表达式、函数,或者条件列发生内部隐式转换,可能显示为func 其他情况null 十、rows rows:

    1.1K10

    MySQL系列】- MySQL执行计划一览

    EXPLAIN为SELECT语句中使用每个表返回一行信息,它按照MySQL在处理语句读取表顺序列出输出中表。...ref通过普通二级索引列与常量进行等值匹配来查询某个表,那么对该表访问方法就可能是 ref。...range :如果使用索引获取某些范围区间记录,那么就可能使用到range访问方法, 一般就是在你 where句中出现了 between、、in 等查询。...,在 Extra 列中会显示Using where使用索引访问来执行对某个表查询,并且该语句 WHERE句中有除了该索引包含列之外其他搜索条件,在 Extra 列中也显示Using...Impossible WHERE:查询语句WHERE子句永远为FALSE将会提示该额外信息 Zero limit:LIMIT子句参数为0,表示并不打算表中读出任何记录,将会提示该额外信息。

    73720

    mysql explain ref列_MySQL EXPLAIN详解

    否则,内层select语句一般顺序编号,对应于其在原始语句中位置 select_type 显示本行是简单或复杂select。...使用=、 、>、>=、、BETWEEN 或者 IN 操作符,用常量比较关键字列,可以使用 range ref 一种索引访问,它返回所有匹配某个单个值行。...主键放入where子句mysql把这个查询转为一个常量(高效) system 这是const连接类型一种特例,表仅有一行满足条件。...ref ref列显示使用哪个列或常数与key一起表中选择行。 rows rows列显示MySQL认为它执行查询必须检查行数。注意这是一个预估值。...const、system: 将确定值应用在索引(unique and not unique)上,type将会是const,结果只有一行type是system。

    3.7K60

    MySQL explain详解

    下面是使用 explain 例子: 在 select 语句之前增加 explain 关键字,MySQL会在查询上设置一个标记,执行查询返回执行计划信息,而不是执行这条SQL(如果 from 中包含子查询...select 6)union result: union 临时表检索结果 select 用这个例子来了解 union 和 union result 类型: mysql> explain select... from 子句中有子查询,table列是 格式,表示当前查询依赖 id=N 查询,于是先执行 id=N 查询。...有 union ,UNION RESULT table 列值为 ,1和2表示参与 union select 行id。...explain 可能出现 possible_keys 有列,而 key 显示 NULL 情况,这种情况是因为表中数据不多,mysql认为索引对此查询帮助不大,选择了全表查询。

    72620

    那就学一学explain吧!

    根据原则,id不同时,SQL大到小执行,id相同则从上到下执行。 二、select_type 表示select查询类型,用于区分各种复杂查询,例如普通查询,联合查询,子查询等等。...SUBQUERY select 或 where 中包含有子查询,该子查询被标记为SUBQUERY。 DERIVED 在SQL语句中包含在from子句中子查询。...五、type 需要重点关注一个字段信息,表示查询使用了哪种类型,在 SQL优化中是一个非常重要指标,依次从优到差分别是:system > const > eq_ref > ref > range >...ref 相比eq_ref,不使用唯一索引,而是使用普通索引或者唯一性索引部分前缀,可能找到多个符合条件行。 ? range 使用索引选择行,仅检索给定范围内行。...explain信息中,一般我们要关心type,看是什么级别,如果是在互联网公司一般需要在range以上级别,接着关心是Extra,有没有出现filesort或者using template,一旦出现就要想办法避免

    57830

    mysql explain详解

    下面是使用 explain 例子: 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询返回执行计划信息,而不是执行这条SQL(如果 from...select 6)union result: union 临时表检索结果 select 用这个例子来了解 union 和 union result 类型: mysql> explain select... from 子句中有子查询,table列是 格式,表示当前查询依赖 id=N 查询,于是先执行 id=N 查询。...有 union ,UNION RESULT table 列值为 ,1和2表示参与 union select 行id。...explain 可能出现 possible_keys 有列,而 key 显示 NULL 情况,这种情况是因为表中数据不多,mysql认为索引对此查询帮助不大,选择了全表查询。

    41.2K2322

    工作中数据库优化技巧

    typerange , 那么 EXPLAIN 输出 ref 字段为 NULL, 并且 key_len 字段是此次查询中使用到索引最长那个....| Using where 1 row in set Time: 0.008s type 类型性能比较 通常来说, 不同 type 类型性能关系如下: ALL < index < range ~...| 5.26 Extra | Using where 1 row in set Time: 0.007s 上面的例子是表 order_info 中查询指定内容, 而我们从此表建表语句中可以知道...Extra EXplain很多额外信息会在 Extra 字段显示, 常见有以下几种内容: Using filesort Extra 中有 Using filesort , 表示 MySQL...扫描行数成百万级以上时候就可以使用分段查询 十二、避免在 where句中对字段进行 null 值判断 对于null判断导致引擎放弃使用索引而进行全表扫描。

    748110

    最完整Explain总结,妈妈再也不担心我SQL优化了

    在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询返回执行计划信息,而不是执行这条SQL(如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中... from 子句中有子查询,table列是 格式,表示当前查询依赖 id=N 查询,于是先执行 id=N 查询。...依次最优到最差分别为:system > const > eq_ref > ref > range > index > ALL 一般来说,得保证查询达到range级别,最好达到ref NULL mysql...最完整Explain总结,妈妈再也不担心我SQL优化了 ref 相比 eq_ref,不使用唯一索引,而是使用普通索引或者唯一性索引部分前缀,索引要和某个值相比较,可能找到多个符合条件行。...(index是索引中读取,而all是硬盘中读取) mysql> explain select * from film; ALL 即全表扫描,意味着mysql需要从头到尾去查找所需要行。

    76520
    领券