一般优化mysql首先看查找的数据有没有用到索引,没有索引就加索引,有索引时候避免索引失效。(如果优化器觉得不需要索引就能返回所需要的数据暂不考虑)

看下面两条语句

MySQL [release_test_oa]> EXPLAIN SELECT * FROM WORKFLOW_LOGS WHERE ID -100 < 300000;
+----+-------------+---------------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table         | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+---------------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | WORKFLOW_LOGS | ALL  | NULL          | NULL | NULL    | NULL | 3998 | Using where |
+----+-------------+---------------+------+---------------+------+---------+------+------+-------------+
MySQL [release_test_oa]> EXPLAIN SELECT * FROM WORKFLOW_LOGS WHERE ID < 300000-100 ;
+----+-------------+---------------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table         | type  | possible_keys | key     | key_len | ref  | rows | Extra       |
+----+-------------+---------------+-------+---------------+---------+---------+------+------+-------------+
|  1 | SIMPLE      | WORKFLOW_LOGS | range | PRIMARY       | PRIMARY | 8       | NULL | 1999 | Using where |
+----+-------------+---------------+-------+---------------+---------+---------+------+------+-------------+

上面那句没有使用到ID字段上的索引,而下面使用到了,所以要避免在列上进行表达式计算。

模糊搜索时候前置%不能使用索引

mysql> EXPLAIN SELECT * FROM workflow_order WHERE WF_ID LIKE '%HRCZ%';
+----+-------------+----------------+------------+------+---------------+------+---------+------+-------+----------+-------------+
| id | select_type | table          | partitions | type | possible_keys | key  | key_len | ref  | rows  | filtered | Extra       |
+----+-------------+----------------+------------+------+---------------+------+---------+------+-------+----------+-------------+
|  1 | SIMPLE      | workflow_order | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 21491 |    11.11 | Using where |
+----+-------------+----------------+------------+------+---------------+------+---------+------+-------+----------+-------------+
1 row in set, 1 warning (0.01 sec)

mysql> EXPLAIN SELECT * FROM workflow_order WHERE WF_ID LIKE '%HRCZ';
+----+-------------+----------------+------------+------+---------------+------+---------+------+-------+----------+-------------+
| id | select_type | table          | partitions | type | possible_keys | key  | key_len | ref  | rows  | filtered | Extra       |
+----+-------------+----------------+------------+------+---------------+------+---------+------+-------+----------+-------------+
|  1 | SIMPLE      | workflow_order | NULL       | ALL  | NULL          | NULL | NULL    | NULL | 21491 |    11.11 | Using where |
+----+-------------+----------------+------------+------+---------------+------+---------+------+-------+----------+-------------+
1 row in set, 1 warning (0.00 sec)

下面可以用到

mysql> EXPLAIN SELECT * FROM workflow_order WHERE WF_ID LIKE 'HRCZ%';
+----+-------------+----------------+------------+-------+-------------------------------+-------------------------------+---------+------+------+----------+-----------------------+
| id | select_type | table          | partitions | type  | possible_keys                 | key                           | key_len | ref  | rows | filtered | Extra                 |
+----+-------------+----------------+------------+-------+-------------------------------+-------------------------------+---------+------+------+----------+-----------------------+
|  1 | SIMPLE      | workflow_order | NULL       | range | workflow_process_wf_id_unique | workflow_process_wf_id_unique | 98      | NULL |  425 |   100.00 | Using index condition |
+----+-------------+----------------+------------+-------+-------------------------------+-------------------------------+---------+------+------+----------+-----------------------+

数据区分度不大的时候,索引也会失效

比如字段只有两个值,如性别

SELECT * FROM `USERS` WHERE `sex` = 1;

【mysql】mysql索引及优化学习的更多相关文章

  1. MySQL函数索引及优化

    很多开发人员在使用MySQL时经常会在部分列上进行函数计算等,导致无法走索引,在数据量大的时候,查询效率低下.针对此种情况本文从MySQL5.7 及MySQL8.0中分别进行不同方式的优化. 1. M ...

  2. 理解Mysql的索引与优化

    转自:http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库 ...

  3. MySQL的索引与优化

    写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...

  4. MySQL的索引及其优化

    前言 索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将对整 ...

  5. mysql的索引以及优化

    本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...

  6. mysql:联合索引及优化

    命名规则:表名_字段名1.需要加索引的字段,要在where条件中2.数据量少的字段不需要加索引3.如果where条件中是OR关系,加索引不起作用4.符合最左原则 尽量不要用or,如果可以用union代 ...

  7. MySQL中索引和优化的用法总结

    1.什么是数据库中的索引?索引有什么作用? 引入索引的目的是为了加快查询速度.如果数据量很大,大的查询要从硬盘加载数据到内存当中. 2.InnoDB中的索引原理是怎么样的? InnoDB是Mysql的 ...

  8. 【mysql】索引的优化

    写在前面的话 查询容易,优化不易,且写且珍惜 mysql结构 从MySQL逻辑架构来看,MySQL有三层架构,第一层连接,第二层查询解析.分析.优化.视图.缓存,第三层,存储引擎 MySQL有哪些索引 ...

  9. Mysql常用索引及优化

    索引是帮助我们快速获取数据的数据结构.索引是在存储引擎中实现的,因此不同存储引擎的索引也不同.这里只介绍InnoDB存储索引所支持的BTree索引: 一.索引类型 为了方便举例子,先创建表person ...

随机推荐

  1. Access使用记录

    iif函数 此函数类似编程语言中的双目运算符,官方解释如下: 在任何可以使用表达式的位置均可使用 IIf.您可以使用 IIf 确定另一个表达式为 True 还是 False.如果表达式为 True,则 ...

  2. js实现input的赋值

    input框赋值如下所示,是一个文本框的html代码,实际开发中,要涉及到将数据库中的数据取出然后放入input框中. <input id="name1" name=&quo ...

  3. java连接CentOS7上的redis

    这篇博客写得挺全的: https://blog.csdn.net/achenyuan/article/details/78521831?locationNum=3&fps=1 我也是跟着这篇博 ...

  4. hadoop 管理命令dfsadmin

    hadoop 管理命令dfsadmin dfsadmin 命令用于管理HDFS集群,这些命令常用于管理员. 1. (Safemode)安全模式 动作 命令 把集群切换到安全模式 bin/hdfs df ...

  5. shell中数组及其相关操作

    转载 https://blog.csdn.net/jerry_1126/article/details/52027539

  6. Centos rpm包安装PHP所需包

    yum -y install php php-devel php-fpm php-xml php-pdo php-ldap php-mysql

  7. js正則表達式

    正則表達式實例化的兩種方式: 字符型 var a=// 對象型var a=new RegExp(,) 修飾符: i:忽略大小寫 g:全局搜索 m:多行搜索 元字符: \轉義字符 \w:字符,數字,下劃 ...

  8. 微信小程序wxml無法實現頁面跳轉的問題

    wxml的 navigator的url設置后無法跳轉? 檢查要跳轉的頁面是否是在APP.json的tabBar里註冊過,如果是tabBar頁面是不能用wx.navigateTo和wx.Redirect ...

  9. java 中的Collection

    /* *一. Collection?-------->容器! * * 1.来源于java.util包 非常实用的数据结构! * *二. 方法? * * void clear()删除集合中所有元素 ...

  10. css last