400-969-7660
首页 > IT问答库 > Java > 太原Java学习进阶之MySQL数据库索引知识梳理

太原Java学习进阶之MySQL数据库索引知识梳理

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

 
  什么是最左前缀原则?
 
  MySQL中的索引可以以一定顺序引用多列,这种索引叫作联合索引。如User表的name和city加联合索引就是(name,city),而最左前缀原则指的是,如果查询的时候查询条件精确匹配索引的左边连续一列或几列,则此列就可以被用到。
 
  由于最左前缀原则,在创建联合索引时,索引字段的顺序需要考虑字段值去重之后的个数,较多的放前面。ORDER BY子句也遵循此规则。
 
  注意避免冗余索引
 
  冗余索引指的是索引的功能相同,能够命中就肯定能命中 ,那么就是冗余索引。如(name,city )和(name )这两个索引就是冗余索引,能够命中后者的查询肯定是能够命中前者的 在大多数情况下,都应该尽量扩展已有的索引而不是创建新索引。
 
  MyISAM和InnoDB对比:
 
  1)是否支持行级锁 : MyISAM 只有表级锁(table-level locking),而InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。
 
  2)是否支持事务和崩溃后的安全恢复:MyISAM 强调的是性能,每次查询具有原子性,其执行比InnoDB类型更快,但是不提供事务支持。但是InnoDB 提供事务支持事务,外部键等高级数据库功能。具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。
 
  3)是否支持外键: MyISAM不支持,而InnoDB支持。
 
  4)是否支持MVCC :仅 InnoDB 支持。应对高并发事务, MVCC比单纯的加锁更高效;MVCC只在 READ COMMITTED 和 REPEATABLE READ 两个隔离级别下工作;MVCC可以使用 乐观(optimistic)锁 和 悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一。
上一篇 : Java多线程中常见错误梳理,新手程序员必看
下一篇 : 把握新风向,抓住时机学Java!

在线预约 立享免费试学资格

姓      名 :
联系方式 :
试学课程 :