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. 风险监控报表(Word)
  2. 压缩感知(I) A Compressed Sense of Compressive Sensing (I)
  3. C++对中文字符的处理
  4. 爱上MVC3系列~同步与异步提交,在过滤器里如何进行重定向~续
  5. for (var key in Obj)遍历JS对象/数组
  6. ASP.net中实现双表格同步缩放不变形
  7. 利用H5和ChromiumWebBrowser构建应用
  8. dotcms open source java cms_开放源Java(JSP)CMS系统的推荐源代码
  9. 情景式领导力学习(2) - 实践案例及思考
  10. 启益电商:商品详情页排版布局怎么做
  11. C语言:字母金字塔(输入一个大写字母,输出从A到这个字母的金字塔
  12. 解决火绒提示helper_haozip.exe文件是病毒威胁
  13. Android入门知识全套笔记
  14. 申报绿色工厂对企业意义
  15. unity优化—资源优化
  16. matlab四元一次非线性方程求解,[转载]MATLAB求解非线性方程(转)
  17. 富养还是穷养,决定孩子的一生
  18. std::true_type和std::false_type
  19. motion_model总结
  20. Windows:kibana 源码本地编译--v6.4.1

热门文章

  1. 互联网人士每天该看的网站
  2. uniapp怎么发起请求
  3. python | 一篇文章正则表达式全学会
  4. 什么是信创产品?怎么成为信创产品?
  5. [HNOI2010]弹飞绵羊
  6. 阿蒙:程序员创业如何寻找优秀的合作伙伴?
  7. Jmeter 读取本地json值并修改
  8. GitHub常用命令及常见问题解决方案
  9. C++:类的使用【析构函数】
  10. AKH-0.66/M8型电流互感器规格(安科瑞-卓宋兰)