『大连千锋』java学习中MySQL数据库索引知识梳理
MySQL是每一个Java工程师都要掌握的技能之一 , 而索引被看做是数据库的两大神器之一 。 有很多初学Java的同学在接触MySQL索引时感觉无从下手 , 接下来就给大家简单介绍一下MySQL数据库索引相关的知识点 。
MySQL索引的建立对于MySQL的高效运行是很重要的 , 索引可以大大提高MySQL的检索速度 。 为什么索引能提高查询速度?因为它将无序的数据变成有序(相对) , 通过事先排好序 , 从而在查找时可以应用二分查找等高效率的算法 。

文章图片
什么是最左前缀原则?
MySQL中的索引可以以一定顺序引用多列 , 这种索引叫作联合索引 。 如User表的name和city加联合索引就是(name,city) , 而最左前缀原则指的是 , 如果查询的时候查询条件精确匹配索引的左边连续一列或几列 , 则此列就可以被用到 。
【『大连千锋』java学习中MySQL数据库索引知识梳理】由于最左前缀原则 , 在创建联合索引时 , 索引字段的顺序需要考虑字段值去重之后的个数 , 较多的放前面 。 ORDERBY子句也遵循此规则 。
注意避免冗余索引
冗余索引指的是索引的功能相同 , 能够命中就肯定能命中 , 那么就是冗余索引 。 如(name,city)和(name)这两个索引就是冗余索引 , 能够命中后者的查询肯定是能够命中前者的在大多数情况下 , 都应该尽量扩展已有的索引而不是创建新索引 。
MyISAM和InnoDB对比:
1)是否支持行级锁:MyISAM只有表级锁(table-levellocking) , 而InnoDB支持行级锁(row-levellocking)和表级锁,默认为行级锁 。
2)是否支持事务和崩溃后的安全恢复:MyISAM强调的是性能 , 每次查询具有原子性,其执行比InnoDB类型更快 , 但是不提供事务支持 。 但是InnoDB提供事务支持事务 , 外部键等高级数据库功能 。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crashrecoverycapabilities)的事务安全(transaction-safe(ACIDcompliant))型表 。
3)是否支持外键:MyISAM不支持 , 而InnoDB支持 。
4)是否支持MVCC:仅InnoDB支持 。 应对高并发事务,MVCC比单纯的加锁更高效;MVCC只在READCOMMITTED和REPEATABLEREAD两个隔离级别下工作;MVCC可以使用乐观(optimistic)锁和悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一 。
推荐阅读
- 【预计 3 分钟读完】中科院大连化物所新突破,成功合成未掺杂及锰离子掺杂的非铅双钙钛矿纳米晶
- [预计 3 分钟读完]成功合成未掺杂及锰离子掺杂的非铅双钙钛矿纳米晶,中科院大连化物所新突破
- 「新闻大连」回家得“翻”,闹心!开门见“山”
- 老王科技@14 时代,Java工程师如何高效成长?,Java
- 千锋长沙■软件测试需要懂编程吗?,千锋全栈软件测试课程教程资源限时领
- 「千锋长沙」软件测试需要懂编程吗?,千锋全栈软件测试课程教程资源限时领
- 「半岛晨报」大连地铁全线实现移动支付:手机扫码可乘车
- 半岛晨报@大连地铁全线实现移动支付:手机扫码可乘车
- 工程师■千锋全栈软件测试课程教程资源限时领,软件测试需要懂编程吗?
- 「乐居网」大连天气升温步伐重新迈起
