1. 最左前缀匹配原则
  2. 主键外检一定要建索引
  3. 对 where,on,group by,order by 中出现的列使用索引
  4. 对较小的数据列使用索引,这样会使索引文件更小,同时内存中也可以装载更多的索引键
  5. 索引列不能参与计算,保持列“干净”,比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很简单,b+树中存的都是数据表中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本太大。所以语句应该写成create_time = unix_timestamp(’2014-05-29’);
  6. 为较长的字符串使用前缀索引
  7. 尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可
  8. 对于like查询,”%”不要放在前面。
    SELECT * FROMhoudunwangWHEREunameLIKE’后盾%’ – 走索引
    SELECT * FROMhoudunwangWHEREunameLIKE “%后盾%” – 不走索引
  9. 查询where条件数据类型不匹配也无法使用索引
  10. 字符串与数字比较不使用索引;
    CREATE TABLEa(achar(10));
    EXPLAIN SELECT * FROMaWHEREa=“1” – 走索引
    EXPLAIN SELECT * FROM a WHERE a=1 – 不走索引
    正则表达式不使用索引,这应该很好理解,所以为什么在SQL中很难看到regexp关键字的原因
  11. 尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0
  12. 不要过多创建索引, 权衡索引个数与DML之间关系,DML也就是插入、删除数据操作。这里需要权衡一个问题,建立索引的目的是为了提高查询效率的,但建立的索引过多,会影响插入、删除数据的速度,因为我们修改的表数据,索引也需要进行调整重建

索引优缺点

一、数据库中创建索引的优缺点

1、创建唯一性索引,保证数据库表中每一行数据的唯一性。

2、加快数据的检索速度,这也是创建索引的最主要的原因。

3、减少磁盘IO(向字典一样可以直接定位)。

4、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

5、加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

二、数据库中创建索引的缺点

1、创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

2、索引需要占用物理空间,特别是聚集索引,需要较大的空间。

3、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

参考链接:数据库索引
索引建立原则

索引的优化策略及优缺点相关推荐

  1. 浅谈Solr和ElasticSearch建索引性能优化策略

    2019独角兽企业重金招聘Python工程师标准>>> 由于Solr和ElasticSearch都是基于Lucene构建的,所以他们之间有很大程度的相似性,故而他们的一些优化策略基本 ...

  2. 深入理解MySQL索引和优化丨MySQL的核心原理

    索引介绍 文章相关视频讲解: C/C++ Linux服务器开发高级架构学习视频点击:C/C++Linux服务器开发/Linux后台架构师-学习视频 理解mysql-索引及其优化 MySQL的核心原理分 ...

  3. mysql btree检索策略_MySQL之Btree索引和HASH索引的区别以及索引优化策略

    索引是帮助mysql获取数据的数据结构.最常见的索引是Btree索引和Hash索引. 不同的引擎对于索引有不同的支持:Innodb和MyISAM默认的索引是Btree索引:而Mermory默认的索引是 ...

  4. sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/9929043.html 推荐:h ...

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

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

  6. Mysql索引原理剖析与优化策略

    Mysql索引原理剖析与优化策略 1.索引的本质  在⽣产环境中,随着数据量不断的增⻓,SQL执⾏速度会越来越慢,常⻅的⼿段就是通过索引来提升查询速度,那么究竟为什么要添加索引?应该如何正确添加索引? ...

  7. MySQL的索引及优化方案

    目录 索引的概念 索引的分类 索引的机制 索引的优缺点 在哪些表上适合使用索引 索引的使用 索引使用注意事项 各个索引区别 索引优化策略 索引的概念 通过给字段添加索引可以提高数据的读取速度,提高项目 ...

  8. 亿级PV,常见性能优化策略总结与真实案例

    作者:晓明 来自:美团技术团队 0 题记 美团网是国内最大的O2O服务平台,虽然经常面临高并发.大流量等问题,但在用户体验优化上美团APP仍被众多IT同行所推崇,他们在性能优化方面积累的宝贵经验尤其值 ...

  9. mysql索引与优化

    2019独角兽企业重金招聘Python工程师标准>>> 第二章.索引与优化 1.选择索引的数据类型 MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响.通常来说 ...

最新文章

  1. python中不同类型的数据不能相互运算_PyTorch中Tensor的数据类型和运算的使用
  2. python opencv SIFT,获取特征点的坐标位置
  3. 网易云信联手长沙银行,远程视频银行系统助力数字化转型
  4. 如何解决项目中.a文件中的.o冲突
  5. 方程的根的个数C语言xtu_零度根轨迹的绘制及情况讨论、以及参数根轨迹的原理介绍...
  6. java批处理 异常处理_Java批处理教程
  7. oracle导入 不是dba,IMP-00013只有DBA才能导入由其他DBA导出的文件
  8. Linux命令执行顺序
  9. 解决FastJson中“$ref 循环引用检测”的问题的几种方式
  10. 错误票据java_【蓝桥杯】错误票据 - osc_bskh1wlw的个人空间 - OSCHINA - 中文开源技术交流社区...
  11. ftp服务器多用文件夹权限,自己动手搭建隔离用户的FTP服务器之权限分配(二)...
  12. crazy-tentacles -- 一个非常有意思的东西
  13. 处理了与日期相关的一些函数
  14. excel表格中忘了撤销工作表保护密码怎么办
  15. SWFUpload学习记录
  16. uint16 累加_在一个驱动程序中看到uint16,uint32,unit8,int8是什么意思?有何作用?...
  17. 哈哈,电驴资源 的下载问题
  18. 从《长安十二时辰》看企业中台战略
  19. 计算机毕设(附源码)JAVA-SSM化妆品销售网站
  20. Embedded Coder Support Package for Texas Instruments C2000 Processors

热门文章

  1. nodejs mysql嵌套查询_node.js,_nodejs mysql查询内嵌套修改,node.js - phpStudy
  2. 如何应用金字塔模型提高结构化表达能力
  3. openGL中关于顶点的法线、切线、副切线
  4. “双十二”年终盛典,Guitar Pro邀您一起倾情共舞
  5. java的parseInt用法
  6. 伪随机序列与相关函数---钧桐肤浅而又消瘦的理解
  7. 专硕平均分393分!重庆大学计算机学院
  8. html相册翻页效果图,js实现相册翻页,滚动,切换,轮播功能
  9. java 抽奖程序,自定义抽奖概率和奖品,模拟王者荣耀水晶抽奖
  10. 成功人生生涯规划精进要诀24条