索引是建的越多越好吗?

明显不是,有以下几点:

  1. 数据量小的表不需要建立索引,建立会增加额外的索引开销
  2. 不经常引用的列不要建立索引,因为不常用,即使建立了索引也没有多大意义。对经常用于查询的字段应该创建索引。
  3. 经常频繁更新的列不要建立索引,因为肯定会影响插入或更新的效率
  4. 数据重复且分布平均的字段,因此他建立索引就没有太大的效果(例如性别字段,是否上架等等,不适合建立索引)
  5. 数据变更需要维护索引,意味着索引越多维护成本越高。当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。
  6. 更多的索引也需要更多的存储空间,一个表中很够创建多个索引,这些索引度会被存放到一个索引文件中(专门存放索引的地方)。

顺便说一下索引的相关知识:

索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,所以索引还是很有用的,其中MySQL中的索引的存储类型有两种:BTREE、HASH,平时我们经常见到的基本都是b+树。
MyISAM(非聚簇索引)和InnoDB(聚簇索引)存储引擎:只支持BTREE索引, 也就是说默认使用BTREE,这也是我们经常见到的,不能够更换MEMORY/HEAP存储引擎:支持HASH和BTREE索引。(上面的聚簇索引和非聚簇索引,可以这么区分,聚簇索引的叶子节点就是数据节点,而非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针。)

索引我们分为四类来讲 单列索引(普通索引,唯一索引,主键索引)、组合索引、全文索引、空间索引。这里我们只说说第一个和第二个。
单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引。 这里不要搞混淆了。

  • 普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
  • 唯一索引:索引列中的值必须是唯一的,但是允许为空值。
  • 主键索引:是一种特殊的唯一索引,不允许有空值。

组合索引:(也叫联合索引(多列联合))
在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。例子如下:
联合索引 (a,b,c) 实际建立了 (a)、(a,b)、(a,b,c) 三个索引.

索引是建的越多越好吗?相关推荐

  1. mysql 面试知识点笔记(二)查询优化及索引越多越好吗?

    2019独角兽企业重金招聘Python工程师标准>>> 问:如何定位并优化慢查询SQL? 根据慢日志定位慢查询sql 使用explain等工具分析sql 使用sql或者尽量让sql走 ...

  2. mysql越筛越少_面试官:为什么SELECT * 会导致查询效率低?

    面试官:"小陈,说一下你常用的SQL优化方式吧." 陈小哈:"那很多啊,比如不要用SELECT *,查询效率低.巴拉巴拉..." 面试官:"为什么不要 ...

  3. 都说DBA 是越老越值钱, 那你是没干过DBA

    正式干DBA 也是有些年头了,十几年是有了, 前些日子翻出最早买的一本数据库的书是2001年的.这么多年,身边的开发,项目经理,应用运维等等这些"友人", 说的最多的一句话就是, ...

  4. 【迟到的Java岗面经】面7家,意外收获5家意向offer,越努力越幸运!

    个人简介 Java后台开发方向. 非计算机专业硕士,专业涉及到一些开发. 实验室项目主要是Java Web系统,挖掘小亮点. 回顾面试的那几个月,宛若梦一场. 一开始心态不好,看到要学习的东西一大堆, ...

  5. 为什么微博“越改版越被骂“?数据却”越骂越好“?

    用户反馈OR自我判断?产品经理应该以哪个为核心? 产品负责人在对产品进行改版/创新时,经常会收到来自团队内部以及产品老用户的强烈反对.原因一般也无非就是,不符合用户习惯.难用.拧巴.不符合常规等等-- ...

  6. 千灯照碧云,越夜越星沙

    (题图摄影:邓建辉) 文 | 弘乐.陈曦 来源 | 螳螂财经(ID:TanglangFin) "晚上去红记吃小龙虾啊!"准备下班的李强拿着电话呼朋唤友.和他一起下楼的同事伍娟听到了 ...

  7. 模型越复杂越容易惰性_ML模型的惰性预测

    模型越复杂越容易惰性 Hey, hope you are having a wonderful day! 嘿,希望您今天过得愉快! Whenever I work on a new ML projec ...

  8. 网络技巧:WiFi越用越慢,到底是什么原因,看完你就明白了!

    WiFi越用越慢,到底是什么原因,今天小编给大家聊聊这个问题! 有人认为是WiFi盒子有问题,但其实和路由器的错误摆放也有一定关系. 今天给大家列出了几种路由器正确摆放的小技巧,而且不用花一分钱,就可 ...

  9. 网络知识:WiFi越用越慢,到底是什么原因?

    WiFi越用越慢,到底是什么原因? 有人认为是WiFi盒子有问题,但其实和路由器的错误摆放也有关系. 今天,小编特地百度了一下,列出了几个路由器正确摆放的小常识,而且不用花一分钱,就可以测试出家中Wi ...

最新文章

  1. Dubbo 和 HSF 在阿里的实践:携手走向下一代云原生微服务
  2. spring boot中利用mybatis-generator插件生成代码
  3. IPSEC ***两个阶段的协商过程
  4. 处理后台返回文本带空格和换行页面不显示断句的问题
  5. 实战演习-用wse上传下载文件
  6. java定时器每一分钟执行一次_2行代码搞定一个定时器
  7. ubuntu中查找文件后高亮_vim查找替换及取消高亮
  8. ServiceManager 进程启动源码分析
  9. ES6小实验-复习字符串
  10. IPv4地址-地址分类与用途
  11. C-LODOP打印插件使用
  12. 通过DCF模型对股票进行估值
  13. 《英语(二)》作文案例
  14. 【西电—英美国家概况(英美概况/英美文化)2023第一学期】第十章参考课后答案
  15. 高速公路交警的经验之谈[转自QQ群]
  16. SCAU2021数据库综合性实验报告
  17. matlab 线性误差分析,基于MATLAB的直线度误差评定的程序设计
  18. 【Linux】基于win10 在 VMware 14 Pro上安装 CentOS 7
  19. 串口服务器接入232显示乱码,串口服务器出现数据乱码怎么回事?
  20. canva怎么拼接图片_js canvas实现5张图片合成一张图片

热门文章

  1. Anaconda3-5.0.1 输入ipython 出现 ImportError: cannot import name ‘create_prompt_application‘
  2. 【Spring】基于xml实现事务控制(银行转账)
  3. xgboost重要参数1
  4. LeetCode简单题之删除字符使字符串变好
  5. Geo-CNN的三维点云
  6. 觉SLAM的主要功能模块分析
  7. CVPR2020论文解读:手绘草图卷积网络语义分割
  8. [JavaScript] Map类型在JavaScript中的使用
  9. 计算机应用专业能评自动化工程师吗,报考自动化控制工程师中级职称需要哪些条件?...
  10. python raw_input 与 input 的区别