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: 1select_type: SIMPLEtable: ex_materialtype: range
possible_keys: PRIMARYkey: PRIMARYkey_len: 4ref: NULLrows: 1553584Extra: Using where
1 row in set (0.00 sec)//不使用强制索引,真实查询耗时 200 rows in set (1.39 sec)
*************************** 1. row ***************************id: 1select_type: SIMPLEtable: ex_materialtype: ref
possible_keys: PRIMARY,idx_master_id,idx_masterid_dspid_filesource_isd,idx_createdkey: idx_master_idkey_len: 4ref: constrows: 1553584Extra: 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 index索引优化相关推荐

  1. MySQL force Index 强制索引概述

    以下的文章主要介绍的是MySQL force Index  强制索引,以及其他的强制操作,其优先操作的具体操作步骤如下:我们以MySQL中常用的hint来进行详细的解析,如果你是经常使用Oracle的 ...

  2. 读薄《高性能MySql》(三)索引优化

    读薄<高性能MySql>(一)MySql基本知识 读薄<高性能MySql>(二)Scheme与数据优化 读薄<高性能MySql>(三)索引优化 读薄<高性能M ...

  3. mysql force index报错_新特性解读 | MySQL 8.0 索引特性4-不可见索引

    MySQL 8.0 实现了索引的隐藏属性.当然这个特性很多商业数据库早就有了,比如ORACLE,在11g中就实现了.我来介绍下这个小特性. 介绍 INVISIBLE INDEX,不可见索引或者叫隐藏索 ...

  4. mysql gis index 索引原理_从原理到优化,深入浅出数据库索引

    MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构. 数据库查询是数据库的最主要功能之一,我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的 ...

  5. mysql optimizer mrr_mysql 索引优化特性之MRR

    MRR针对于辅助索引上的范围查询进行优化,收集辅助索引对应主键rowid.进行排序后回表查询,随机IO转顺序IO 当我们需要对大表(基于辅助索引)进行范围扫描时,会导致产生许多随机/O.而对于普通磁盘 ...

  6. Mysql详解——索引优化

    本篇文章是对Mysql索引的创建以及优化进行一个介绍,关于索引的底层原理可以看我另一篇文章:Mysql详解--索引详解 文章目录 一.索引的创建和设计原则 1. 索引的声明和使用 1.1 索引的分类: ...

  7. Mysql原理及索引优化分析

    一.Mysql索引数据结构 (https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 数据结构可视化) 1.二叉树 特点:二叉树, ...

  8. MySql ORDER BY 索引优化

    上一篇:MySql 索引优化 MySql 支持两种方式的排序,FileSort 和 Index ,Index 效率高,它指的是 MySql 扫描索引本身完成排序.FileSort 会对数据使用一个外部 ...

  9. mysql存储引擎 索引优化_MySQL存储引擎,索引及基本优化策略

    存储引擎 与Oracle, SQL Server这些数据库不同,MySQL提供了多种存储引擎.什么是存储引擎?存储引擎其实就是一套对于数据如何存储,查询,更新,建立索引等接口的实现.不同存储引擎特性有 ...

最新文章

  1. oracle之分析函数over及开窗函数
  2. Linux信号 四 异步等待信号与同步等待信号接口
  3. mysql safe无法启动_解决mysqld_safe无法启动问题的方法
  4. for、enumerat、range、xrange
  5. php fatal error 500,PHP在Linux下出现HTTP ERROR 500解决方法
  6. python 装饰器装饰类
  7. windows事件id大全_技术转载 || springboot+redis做过期事件通知业务
  8. python解析器打包_打包发布Python模块的方法详解
  9. python常用网站信息收集:持续更新版本--
  10. 使用@AspectJ注解开发Spring AOP
  11. [NOIP2016 普及组 T1] 买铅笔
  12. Operator基础:1: Operator Framework简介
  13. 88E1111与千兆网口连接
  14. dell更换硬盘识别不了新的硬盘
  15. 5G LTE窄带物联网(NB-IoT)8
  16. PostgreSQL插入大量数据:pg_testgen插件
  17. 微信公众平台接入机器人小黄鸡
  18. Windows server 2012 服务器挂载NAS盘
  19. 【杂纪】从ROC曲线到AUC值,再到Mann–Whitney U统计量
  20. iOS开发之加载、滑动翻阅大量图片优化解决方案

热门文章

  1. next和nextLine的使用
  2. 塑化行业SCM供应链管理平台授信支付与供应链金融,轻松交易
  3. 计算机 云 开发,云计算ppt-【ppt】介绍一种计算机新技术的基本原理、应用和发展情况。(如云计算、物联网、嵌入式软件设计开发等)...
  4. 动态规划之深入灵魂的解读(非常好)
  5. yarn安装vue-cli
  6. 转-超声系统的信号链设计注意事项
  7. GAZEBO INSTALLATION SCRIPT Problems The following packages have unmet dependencies: gazebo11
  8. java什么是格式化数字,java中对数字进行格式化
  9. 【MOS】OCR/Vote disk 维护操作: (添加/删除/替换/移动) (文档 ID 1674859.1)
  10. c语言整数各位数字求和