数据库两大必备神器:索引和锁底层原理是什么!
非聚积索引在成立的时辰也未必是单列的,可以多个列来建设索引。
在建设多列索引中也涉及到了一种非凡的索引-->包围索引
好比说:
7、索引最左匹配原则 最左匹配原则:
例子:
8、=、in自动优化次序 不必要思量=、in等的次序,mysql会自动优化这些前提的次序,以匹配尽也许多的索引列。 例子:
9、索引总结 索引在数据库中是一个很是重要的常识点!上面谈的着实就是索引最根基的对象,要建设出好的索引要顾及到许多的方面: 1,最左前缀匹配原则。这长短常重要、很是重要、很是重要(重要的工作说三遍)的原则,MySQL会一向向右匹配直到碰着范畴查询(>,<,BETWEEN,LIKE)就遏制匹配。 3,只管选择区分度高的列作为索引,区分度的公式是 COUNT(DISTINCT col) / COUNT(*)。暗示字段不一再的比率,比率越大我们扫描的记录数就越少。 4,索引列不能参加计较,只管保持列“干净”。好比,FROM_UNIXTIME(create_time) = '2016-06-06' 就不能行使索引,缘故起因很简朴,B+树中存储的都是数据表中的字段值,可是举办检索时,必要把全部元素都应用函数才气较量,显然这样的价钱太大。以是语句要写成 : create_time = UNIX_TIMESTAMP('2016-06-06')。 5,尽也许的扩展索引,不要新成立索引。好比表中已经有了a的索引,此刻要加(a,b)的索引,那么只必要修改原本的索引即可。 6,单个多列组合索引和多个单列索引的检索查询结果差异,由于在执行SQL时,MySQL只能行使一个索引,会从多个单列索引中选择一个限定最为严酷的索引。 二、锁 在mysql中的锁看起来是很伟大的,由于有一大堆的对象和名词:排它锁,共享锁,表锁,页锁,间隙锁,意向排它锁,意向共享锁,行锁,读锁,写锁,乐观锁,气馁锁,死锁。这些名词有的博客又直接写锁的英文的简写--->X锁,S锁,IS锁,IX锁,MMVC... 锁的相干常识又跟存储引擎,索引,事宜的断绝级别都是关联的.... 这就给初学数据库锁的人带来不少的贫困~~~于是我下面就简朴清算一下数据库锁的常识点,但愿各人看完会有所辅佐。 1、为什么必要进修数据库锁常识 不少人在开拓的时辰,应该很少会留意到这些锁的题目,也很少会给措施加锁(除了库存这些对数目精确性要求极高的环境下) 一样平常也就听过常说的乐观锁和气馁锁,相识过根基的寄义之后就没了~~~ 放心丸:纵然我们不会这些锁常识,我们的措施在一样平常环境下照旧可以跑得好好的。由于这些锁数据库隐式帮我们加了:
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |