mysql索引优化一直以来是DBA和开发人员长期坚持的一项基本工作,合理的索引对于业务来说非常重要,合理的索引能有效改善性能。因此在开发中,定期排查索引的有效性很重要,排查的根据就是历史sql,排查的目的就是优化索引,一个合格的开发人员要考虑未来1年的数据量的情况下sql的执行效率。

索引是否有效的方法是explain,它能反应很多内容,具体的不再赘述看下面的sql示例。

访问类型 ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能递增)

mysql> explain select id,created,expire from ex_xxx force index(PRIMARY) where status = 1 and created > 1546272000 and id < 17149185 and master_id = 0 order by id desc limit 200\G

// 使用强制索引,在真实查询耗时 200 rows in set (0.00 sec)

*************************** 1. row ***************************

id: 1

select_type: SIMPLE

table: ex_material

type: range

possible_keys: PRIMARY

key: PRIMARY

key_len: 4

ref: NULL

rows: 1553584

Extra: Using where

1 row in set (0.00 sec)

//不使用强制索引,真实查询耗时 200 rows in set (1.39 sec)

*************************** 1. row ***************************

id: 1

select_type: SIMPLE

table: ex_material

type: ref

possible_keys: PRIMARY,idx_master_id,idx_masterid_dspid_filesource_isd,idx_created

key: idx_master_id

key_len: 4

ref: const

rows: 1553584

Extra: Using index condition; Using where

1 row in set (0.00 sec)

显然mysql在查询优化时,使用了type=ref的索引,然后当idx_master_id建立的不合理时(发现320w数据,master_id=0的有310w,区分度不高),就会出现速度ref 类型比 range慢的情况。

这里就可以发现强制索引的用途了,可以使用force index 指定索引,来改善查询性能。

不过建议是临时sql查询使用,因为线上数据随着量的增加,调整索引是很常见的事情,如果在某个时间删除了,那么使用force index的逻辑就会出问题。

注:索引优化和代码结构优化一样,都是一项长期的工作

mysql force作用_mysql force index 用途相关推荐

  1. mysql optimize 作用_mysql optimize table

    mysql 数据文件的使用是只扩展,不回收.对表执行delete之后,磁盘上数据文件是不会缩小的. 通常的做法,是先逻辑导出,然后truncate 原表(或者删除重建),再导入. 另外还有一种方法是o ...

  2. mysql show作用_mysql的show操作

    SHOW CHARACTER SET 显示所有可用的字符集 SHOW CHARACTER SET; SHOWCHARACTER SET LIKE 'latin%'; SHOW COLLATION 输出 ...

  3. mysql bin-log作用_MySQL中的binlog的作用是什么?

    前言 MySQL中有六种日志文件,其中二进制日志也与事务操作有一定的关系,对理解MySQL中的事务操作有着重要的意义. 二进制日志(binlog): 作用: 1,用于复制,在主从复制中,从库利用主库上 ...

  4. mysql show作用_MySQL show的用法

    a. show tables或show tables from database_name; // 显示当前数据库中所有表的名称 b. show databases; // 显示mysql中所有数据库 ...

  5. mysql ibdata作用_mysql data文件夹下ibdata1 文件作用

    ibdata1这个文件超级大, 查了一下, 大概的作用如下 是储存的格式 INNODB类型数据状态下, ibdata用来储存文件的数据 而库名的文件夹里面的那些表文件只是结构而已 由于mysql4.1 ...

  6. 查看mysql view作用_Mysql中View视图的作用

    浙江PHP博客分享关于Mysql中使用View视图的作用.很多小伙伴知道视图的作用,却不知道为什么要使用视图以及视图的一些好处是什么,下面浙江一点PHP将详细阐述关于视图的用法以及作用. 作用一: 提 ...

  7. mysql rollback作用_mysql rollback 原理以及若干疑问

    最近在研究mysql的事务,参考了网上的一些例子写了一些,但是感觉有一点疑问,google后发现还是没找到答案,翻了下源码,还没找到核心关键点,想请大神们,帮忙指个路 1.如果在commit之前发生异 ...

  8. mysql union 作用_Mysql联合查询UNION和UNION ALL的使用介绍

    Mysql联合查询UNION和UNION ALL的使用介绍 一.UNION和UNION ALL的作用和语法 UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行. UNIO ...

  9. mysql时区作用_mysql 时区问题

    1.问题源自何处? 之前用的mysql 8.0以上的版本连接时都需要在url后面加 serverTimezone=UTC 实际上是指出核数据库的时区为美国.因为我们的数据库的时区是美国的,而我们连接的 ...

最新文章

  1. 14 个 Spring MVC 顶级技巧,随时用随时爽,一直用一直爽
  2. 2019年上半年国内学者在植物领域共发表6篇Science, 1篇Nature,1篇Cell!
  3. java控制器删除数据_javaWeb删除一条及多条数据
  4. RxJava使用(三)Scheduler 线程控制
  5. 20元以上200元以下罚款的交通违法行为
  6. LeetCode:螺旋矩阵【54】
  7. 对象入参指定泛型类型_如何得到正确的MethodInfo对象当一个类使用泛型和泛型类型参数...
  8. mysql创建非聚集索引_一文让你明白聚集索引和非聚集索引?
  9. android获取有线、wifi、3G(4G)的IP
  10. MAC中已有的虚拟环境在pycharm 中进行调用
  11. python 最小二乘法库_利用python搞机器学习——最小二乘法 | 学步园
  12. 想学plc但是没有计算机基础,没有电工基础可以学plc编程吗?能学懂PLC编程吗?...
  13. Excel取消自动行高调整(取消自动换行)
  14. 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(一)推荐系统概述...
  15. dsp28335电机控制板资料 永磁同步电机有传感器三闭环foc控制
  16. 整数:求数组Nums中只出现一次的数
  17. 如何评价腾讯发布的区块链游戏《一起来捉妖》?
  18. WordPress关注微信公众号回复可见和阅读更多的方法
  19. java实现支付宝扫码支付详细步骤
  20. aarch64-linux-gnu交叉编译器二进制方式安装

热门文章

  1. b360m能插HTML,终于可以愉快装第八代平台了,那么首发B360主板都有哪些?
  2. 积分排名页面 html,欧洲联赛排名积分榜
  3. 51单片机-串口通信(串口向电脑发送信息电脑通过串口控制LED)
  4. set函数python作用_pythonset函数是什么
  5. 使用nat123远程ssh连接WSL Ubuntu系统
  6. 人工神经网络文献综述,人工神经网络参考文献
  7. 学校计算机和网络安全情况,学校网络安全自查报告
  8. typedef typename
  9. 知识图谱 Protege 本体构建
  10. 你想要的宏基因组-微生物组知识全在这(2023.3)