sql
文章平均质量分 91
刘军随笔
这个作者很懒,什么都没留下…
展开
-
MySql | InnoDB 多个单列索引与联合索引之路
简述: 为了提高数据库效率,建索引是家常便饭;那么当查询条件为2个及以上时,我们是创建多个单列索引还是创建一个联合索引好呢?他们之间的区别是什么?哪个效率高呢? 一、联合索引测试 注:Mysql版本为 5.7 创建测试表: CREATE TABLE `jlyx_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_cod...原创 2019-11-25 14:41:39 · 1340 阅读 · 0 评论 -
基于三大范式设计数据库结构的矛盾体
一、简述 开发中必不可少的要与数据库打交道,那么优秀的数据库设计则显得尤其的重要。一个合理的数据库结构可以为当前开发及未来维护提供强有力的支撑。 什么样的数据库结构才能称得上优秀呢?个人的理解点是: 满足需求 性能与冗余(例:某需求,有一需频繁访问的查询功能,查表A时需通过关联ID访问B表的对应名称,那么是否可以将B表名称直接冗余到A表中,减少频繁的关联查询,增加查询语句的性能) 预见性扩...原创 2019-07-15 21:29:28 · 780 阅读 · 0 评论 -
MySql | InnoDB存储引擎的锁与索引(B+树结构索引)
一、简述 InnoDB的细粒度行锁以及事务支持是MySQL吸引人的重要特性。但,不当的使用会使InnoDB的行级锁变成表级锁,给我们带来较大的困扰(select、update、delete都可能导致表级锁)。 二、索引类型 InnoDB的索引有两类:聚集索引(Clustered Index)与普通索引(Secondary Index)。 InnoDB的每一个表都会有聚集索引。如果你没手...原创 2019-08-06 14:10:23 · 1388 阅读 · 0 评论 -
MySql | InnoDB存储引擎的死锁
一、简述 前面的文章(《InnoDB存储引擎的锁与索引》)中提到过,行级锁必须建立在索引的基础上。行级锁并不是直接锁记录,而是锁索引。如果一条SQL语句用到了主键索引,mysql会锁住主键索引;如果一条语句只用了非主键索引,mysql则会先锁住非主键索引,再锁定主键索引。 二、锁表解析 直接上案例吧,有如下表: CREATE TABLE `indexescase` ( `id` in...原创 2019-08-08 18:21:30 · 1562 阅读 · 0 评论