得物面试:创建索引时会不会锁表?
2其乐融融 发布于 2024/06/04 01:33:06
在 MySQL 5.6 之前,创建索引时会锁表,但在 MySQL 5.6.7 之后,因为新增了 Online DDL 技术,所以此时在添加索引时,是可以和 DML 数据操作语言 INSERT、UPDATE、DELETE、SELECT 等命令一起执行的。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/06/04 01:33:06
在 MySQL 5.6 之前,创建索引时会锁表,但在 MySQL 5.6.7 之后,因为新增了 Online DDL 技术,所以此时在添加索引时,是可以和 DML 数据操作语言 INSERT、UPDATE、DELETE、SELECT 等命令一起执行的。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/06/01 01:21:06
实际上,row_id 是 MySQL 的一种优化算法,它首先考虑使用全字段排序。只有在认为字段长度过长可能影响效率时,才会采用 row_id 排序方式。此外,如果能够利用 sort_buffer 完成排序,MySQL 就不会使用临时文件。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/05/29 01:33:05
全文总结一下,其实就是我们要学会用数据库的要求方式来执行SQL。即要写好应用查询SQL,必须要结合良好的数据结构和合理的索引设计才可以。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/05/28 01:33:10
在了解了索引跳跃扫描的执行过程后,一些聪明的读者可能会意识到,这种查询优化更适用于具有较少取值范围和低区分度的字段(比如性别),而当字段的区分度特别高时(比如出生年月日),这种查询可能会变得更慢。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/05/25 01:33:12
在支持事务的存储引擎(如InnoDB)中,事务机制和锁定协议有助于维护索引的唯一性。当一个事务正在修改索引列时,其他事务对相同键值的修改会被适当地阻塞,直到第一个事务提交或回滚,确保数据的一致性和唯一性。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/05/24 01:33:10
索引是提高 MySQL 查询性能的重要工具,但在使用索引时需要遵循一定的规则和最佳实践,以避免常见的索引失效问题。通过合理设计和维护索引,可以显著提升数据库的性能和响应速度。希望本文对你在 MySQL 索引的使用和优化方面有所帮助。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/05/16 01:33:18
使用Explan执行计划存在无法提前预知索引选择的局限性。然而,只要熟悉MySQL底层代价模型的计算公式,我们就能预知索引的走向。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/04/18 01:33:14
MySQL中,正确地使用和优化索引可以显著提升数据检索速度。本文将深入探讨MySQL中常见的索引优化手段,并通过实例加以说明。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/04/07 01:33:12
了解完存储引擎和不同MySQL版本对索引长度的限制,我们以InnoDB引擎为例,看MySQL不同的字符集对索引长度有啥影响。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/03/26 01:33:16
当我们根据非聚簇索引查询的时候,会先通过非聚簇索引查到主键的值,之后,还需要再通过主键的值再进行一次查询才能得到我们要查询的数据。而这个过程就叫做回表。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/03/07 01:33:03
这篇文章是基于工作实际中碰到的问题,把问题产生的原因和解决思路总结了下。文中针对提到的一些索引选择差异情况我们结合了解到的优化器执行策略,使用trace工具进行了验证。优化器有一套非常复杂的算法策略,本人对于MySQL的理解深度有限,这里就不详细分析了,还需要继续学习。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/02/23 01:26:08
SQL 无法做分区裁剪时,使用了高效的唯一索引,当索引是全局索引时效率最高;当索引是本地索引时,需要访问所有的索引分区,性能会下降。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/02/18 01:33:13
在MySQL数据库使用规范或优化建议中都明确说类似 like '%a%'的写法不走索引。那么,真的是在任何条件下这种写法都不能走索引么?
阅读()评论(0)赞 ()
其乐融融 发布于 2024/01/09 01:33:20
const — 将一个主键放置到 where 后面作为条件查询, MySQL 优化器就能把这次查询优化转化为一个常量,如何转化以及何时转化,这个取决于优化器,这个比 eq_ref 效率高一点。
阅读()评论(0)赞 ()
其乐融融 发布于 2024/01/09 01:33:13
本文以 MySQL 数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是, MySQL 支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此 MySQL 数据库支持多种索引类型,如 B-Tree 索引,哈希索引,全文索引等等。为了避免混乱,将只关注于 B-Tree 索引,因为这是平常使用 MySQL 时主要打交道的索引。
阅读()评论(0)赞 ()
其乐融融 发布于 2023/11/17 01:33:19
MySQL索引是数据库性能优化的关键工具,通过深入理解索引的类型、创建、维护和最佳实践,可以更好地利用它们,提高数据库查询性能,提供更快的数据检索速度。
阅读()评论(0)赞 ()
其乐融融 发布于 2023/11/08 01:33:14
本文中,我们了解了 FORCE INDEX 原理和用法。它与 USE INDEX 提示非常相似,它在使用全表扫描而不是使用可用索引的情况下很有帮助。
阅读()评论(0)赞 ()
其乐融融 发布于 2023/11/04 01:33:26
过度使用USE INDEX可能会导致查询性能下降。优化器通常能够更好地评估和选择索引,使用USE INDEX可能会限制其优化能力,导致不必要的索引使用和性能损失。在使用USE INDEX语句时需要谨慎评估和测试。建议在实际场景中进行性能测试和比较,确保使用USE INDEX确实能够提供更好的性能,而不是盲目使用。
阅读()评论(0)赞 ()
其乐融融 发布于 2023/10/26 01:33:14
今天整理了一下 MySQL 的索引,一般人只知道3~4个,但我经常听到有10几个之多。
阅读()评论(0)赞 ()
其乐融融 发布于 2023/09/15 03:20:06
今天整理了一下 MySQL 的索引,一般人只知道3~4个,但我经常听到有10几个之多。
阅读()评论(0)赞 ()
其乐融融 发布于 2023/06/23 03:20:42
索引可以帮助我们快速搜索数据,innodb 存储引擎用的是 b+树索引,叶子节点存放的是索引+数据,非叶子节点只存放索引。
阅读()评论(0)赞 ()
其乐融融 发布于 2023/06/22 03:20:57
3. B+Tree的每个叶子节点增加了一个指向相邻叶子节点的指针,它的最后一个数据会指向下一个叶子节点的第一个数据,形成了一个有序链表的结构。
阅读()评论(0)赞 ()
其乐融融 发布于 2023/06/22 03:20:43
首先主要是讲了聚簇索引和非聚簇索引,随后讲了MySQL对于一些常见查询的优化,比如覆盖索引,索引下推,都是为了减少回表次数,从而减少带来的性能消耗,再后面就提到MySQL是如何选择索引的,最后介绍了索引失效的场景和索引建立的原则。
阅读()评论(0)赞 ()
其乐融融 发布于 2023/06/22 03:20:33
在 MySQL8 之前,默认会按照 group by 的字段进行排序,此时加上 order by null 就是告诉 MySQL,不用帮我排序了,直接返回结果就行了,因为如果不加 order by null,则可能会进行 filesort 排序,降低查询效率。
阅读()评论(0)赞 ()
其乐融融 发布于 2023/06/21 03:20:49
联合索引就是数据表中的多个字段,共同组成一个索引。由于 InnoDB 中索引的数据结构是一个 B+Tree,当是一个联合索引的时候,排序的时候会首先按照联合索引的第一个字段排序,如果第一个字段的值相同,则按照第二个字段排序,如果第二个字段的值也相同,则按照第三个字段排序,以此类推。
阅读()评论(0)赞 ()