美文网首页
数据库优化:运算后的列,不能使用索引

数据库优化:运算后的列,不能使用索引

作者: bonnie_xing | 来源:发表于2021-08-11 18:40 被阅读0次

一、确认数据库索引信息

MySQL [bonnie]> show index from user;

+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| user  |          0 | PRIMARY  |            1 | id          | A         |     4979256 |     NULL | NULL   |      | BTREE      |         |               |
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)

二、 实际场景

查询语句中,存在运算符。实际运算后的列,不能使用索引

2.1 确认“ select * from user where id+1=2;”的执行过程

explain select * from user where id+1=2;

+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows    | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
|  1 | SIMPLE      | user  | ALL  | NULL          | NULL | NULL    | NULL | 4979256 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
1 row in set (0.00 sec)

执行该条语句,需要遍历4979256 行数据
type是all

2.2 实际执行查看运行时间

select * from user where id+1=2;

+----+-------+-----+-----+---------------+---------+------------+------------+
| id | name  | sex | age | email         | address | company    | city       |
+----+-------+-----+-----+---------------+---------+------------+------------+
|  1 | PlNej |   1 |  77 | TbCFvn@qq.com | bu      | 1604932650 | 1604932650 |
+----+-------+-----+-----+---------------+---------+------------+------------+
1 row in set (2.62 sec)

实际运行后,一条语句运行了2s+

2.3 对比,看下不加计算的运行效果

 select * from user where id=1;
+----+-------+-----+-----+---------------+---------+------------+------------+
| id | name  | sex | age | email         | address | company    | city       |
+----+-------+-----+-----+---------------+---------+------------+------------+
|  1 | PlNej |   1 |  77 | TbCFvn@qq.com | bu      | 1604932650 | 1604932650 |
+----+-------+-----+-----+---------------+---------+------------+------------+
1 row in set (0.01 sec)

去掉运算“+”,直接给出运算结果,一条语句只执行了0.01s

2.3 对比,看下不加计算的执行过程

explain select * from user where id=1;

+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table | type  | possible_keys | key     | key_len | ref   | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
|  1 | SIMPLE      | user  | const | PRIMARY       | PRIMARY | 4       | const |    1 | NULL  |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
1 row in set (0.00 sec)

只需要查看1行,并切type的类型是const

相关文章

  • 数据库优化:运算后的列,不能使用索引

    一、确认数据库索引信息 二、 实际场景 查询语句中,存在运算符。实际运算后的列,不能使用索引 2.1 确认“ se...

  • Mysql调优——通过索引优化

    通过索引进行优化 优化小细节; 当使用索引列进行查询的时候尽量不要使用表达式,把计算放到业务层而不是数据库层。 #...

  • 4)MySQL索引优化

    索引优化 1. 尽量全值匹配 当建立索引后,能再where条件中使用索引列,就尽量使用。例如 alter tabl...

  • (102)mysql优化之使用索引优化查询

    概述 索引是数据库优化中最常用的也是最重要的手段之一。该篇看看索引的分类,使用场景,不能使用的场景等。 索引分类 ...

  • 2020-08-19:索引优化的几点原则

    前言 每日一题专栏 索引优化的几点原则 尽量全值匹配 如果你使用了复合索引,而你查询的列是索引列,不要使用sele...

  • 索引

    什么是索引?索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。索引分为:...

  • 超牛的MySQL索引知识点详解,不用再去找别的了

    数据库索引,相信大家都不陌生吧。 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中...

  • MySQL数据库索引的知识点,你所需要了解的都在这儿了!

    数据库索引,相信大家都不陌生吧。 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中...

  • Mysql 索引

    什么是索引 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 索引的类...

  • 数据库索引

    一、什么是索引 索引是对数据库中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 二、索...

网友评论

      本文标题:数据库优化:运算后的列,不能使用索引

      本文链接:https://www.haomeiwen.com/subject/eccfbltx.html