计算机基础面经29
计算机基础面经29
@author 壮
数据库:
索引:
- 索引与主键的区别
- 索引的优缺点
- 使用索引的原因
- 聚簇索引和非聚簇索引的区别
- 索引什么时候是否会失效,最左匹配原则是什么?
- 索引的类型
- 建立索引的场景
计算机网络:
- HTTP常见的状态码
- HTTP如何禁用缓存?如何确认缓存?
数据库
索引
1、索引与主键的区别
- 主键是为了标识数据库记录唯一性,不允许记录᯿复,且键值不能为空,主键也是一个特殊索引
- 数据表中只允许有一个主键,但是可以有多个索引
- 使用主键的数据库会自动创建主索引,也可以在非主键上创建索引,方便查询效率
- 索引可以提高查询速度,它就相当于字典的目录,可以通过它很快查询到想要的结果,而不需要进行全表扫描
- 主键索引外索引的值可以为空. 主键也可以由多个字段组成,组成复合主键,同时主键肯定也是唯一索引
- 唯一索引则表示该索引值唯一,可以由一个或几个字段组成,一个表可以有多个唯一索引
2、索引的优点与缺点
优点:
- 创建唯一性索引,保证数据库表中每一行数据的唯一性
- 大大加快数据的检索速度,这也是创建索引的最主要的原因
- 加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
- 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
- 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。
缺点:
- 创建索引和维护索引要耗费时间,这种时间随着数据ᰁ的增加而增加
- 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索
引,那么需要的空间就会更大
- 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度
3、使用索引的原因[优点]
- 将随机IO变为顺序IO
- 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义
4、聚簇索引和非聚簇索引的区别?
聚簇索引:
- 以主键创建的索引
- 在叶子节点存储的是表中的数据
- 不是一种索引类型,而是一种存储数据的方式.Innodb的聚簇索引是在同一个数据结构中保存了索引和数据
- 聚簇索引记录的排序顺序和索引的排序顺序一致,所以查询效率快
【因为只要找到第一个索引值记录,其余的连续性的记录在物理表中也会连续存放,一起就可以查询到】
缺点:
新增比较慢
【因为为了保证表中记录的物理顺序和索引顺序一致,在记录插入的时候,会对数据页᯿新排序】
非聚簇索引:
- 以非主键创建的索引(二级索引)
- 在叶子节点存储的是主键和索引列
- 索引的逻辑顺序与磁盘上行的物理存储顺序不同,非聚集索引在叶子节点存储的是主键和索引列
【当我们使用非聚集索引查询数据时,需要拿到叶子上的主键再去表中查到想要查找的数据。这个过程就是我们所说的回表】
5、索引什么时候是否会失效,最左匹配原则是什么?
最左匹配原则:
最左优先,以最左边的为起点任何连续的索引都能匹配上,如不连续,则匹配不上;
索引失效在以下情况:
- 不满足最左【前缀】匹配规则
- 在索引列上做任何操作如计算、函数、(手动或自动)类型转换等操作,会导致索引失效而进行全表扫描
- 使用不等于(!=、<>)
- like 中以通配符开头(’%abc’)
- 字符串不加单引号索引失效
- or 连接索引失效
6、索引的类型
(1)从存储来看
全文索引:
目前只有MyISAM引擎支持。其可以在CREATE TABLE,ALTER TABLE,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR,TEXT 列上可以创建全文索引。
围查询、排序及组合索引仍然效率不高。
B树索引:
BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),每次查询都是从树的入口 root开始,依次遍历node,获取leaf。这是MySQL里默认和最常用的索引类型。
R树索引:
RTREE在MySQL很少使用,仅支持geometry数据类型,支持该类型的存储引擎只有MyISAM、BDb、InnoDb、 NDb、Archive几种。相对于BTREE,RTREE的优势在于范围查找。
(2)应用层次来看
普通索引:
即一个索引只包含单个列,一个表可以有多个单列索引。
唯一索引:
索引列的值必须唯一,但允许有空值。
复合索引【联合索引】:
一个索引包含多个列。所有的索引列只可以进行最左前缀匹配【通过查询来反推索引,以使某个固定的查询可以尽可能的命中索引以提高查询速度】
从表记录的排列顺序和索引的排列顺序是否一致来划分:
聚集索引:表记录的排列顺序和索引的排列顺序一致。
非聚集索引:表记录的排列顺序和索引的排列顺序不一致。
(3)其他
前缀索引:
在对一个比较长的字符串进行索引时,可以仅索引开始的一部分字符,这样可以大大的节约索引空间,从而提高索引效率.但是这样也会降低索引的选择性
覆盖索引:
当一个索引包含(或者说是覆盖)需要查询的所有字段的值时【在InnoDB存储引擎中,如果不是主键索引,叶子节点存储的是主键+列值。最终还是要“回表”,也就是要通过主
键再查找一次,这样就会比较慢。覆盖索引就是把要查询出的列和索引是对应的,不做回表操作!】
7、建立索引的场景
在最频繁使用的、用以缩小查询范围的字段,需要排序的字段上建立索引。
不宜:
- 对于查询中很少涉及的列或者᯿复值比较多的列
- 对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等
全站分卷索引 · 152 卷
- 1代码随想录知识星球精华(最强八股文)第五版(面经篇)
- 2后端面经02-美团
- 3Java面经02-阿里ICBU
- 4Java面经-04-CVET
- 5Java面经-06-字节后端
- 6Java面经08-用友
- 7Java面经09-快手
- 83. 计算机网络
- 94. 数据库
- 105. 算法
- 11Java面经11-美团
- 121.3 java的4种引用
- 132. JVM
- 143. 操作系统
- 154. 计算机网络
- 165. 数据库
- 17Java面经13
- 18Java面经14
- 19Java面经16
- 20Java面经17
- 21Java面经18
- 22二面
- 23三面
- 24面经19-Java-字节暑期实习
- 25字节三面
- 26面经21-Java-蚂蚁暑期实习
- 27蚂蚁三面
- 28MySQL
- 29计算机网络
- 30拉链法的工作原理
- 31确定桶下标
- 32扩容 - 基本原理
- 33链表转红黑树
- 34子进程和线程的区别
- 35协程
- 36数据库
- 37哈希索引
- 38计算机网络
- 39TCP和UDP的区别
- 40面经25-Java-百度二面
- 41面经26-Java-京东一面
- 42面经27-Spring
- 43计算机基础面经28
- 44计算机基础面经29
- 45计算机网络
- 46操作系统
- 47任务调度算法
- 48数据库
- 49计算机基础面经31
- 50乐观锁两种实现机制
- 51版本号机制
- 52死锁相关问题
- 53计算机网络
- 54拥塞控制的四种方法
- 55计算机基础面经32
- 56三次握手的流程
- 57计算机基础面经33
- 58计算机基础面经34
- 59异步
- 60C++后端
- 61面经3-C++-地平线
- 62面经6-C++-国电南瑞
- 63面经7-c++后端-字节
- 64二面
- 65面经11-C++-OPPO
- 66面经12-C++-商汤
- 67SelectDB
- 68面经15-C++-中望
- 69面经16-C++-米哈游
- 70面经17-C++-旷世
- 71面经19-C++-蔚来
- 72面经20-C++-第四范式
- 73面经21-C++-TP-Link
- 74面经23-C++-猿辅导
- 75面经25-C++-文远知行
- 76面经26-C++-百度
- 77百度二面
- 78百度三面
- 79面经27-C++-ZEKU
- 80ZEKU哲库HR面
- 81面经28-C++-VIVO
- 82面经29-C++-TPLINK
- 83字节二面
- 84HR面
- 85面经32-C++
- 86TCP的粘包与拆包
- 87引入协程的原因
- 88面经34-C++
- 892. 指针与引用的区别
- 902. Nagle 算法与延迟确认
- 91数据库
- 922. MVCC-多版本并发控制
- 93计算机网络
- 94面经36
- 95面经37
- 96面经38
- 97面经39-C++-拼多多+字节
- 98字节一面【7.27】
- 99shopee测开一面【7.29】
- 100一、表面上开销
- 101面经44-京东二面
- 102Go后端
- 103二面
- 104面经3-Go-字节日常实习
- 105字节二面
- 106字节三面
- 107HR面
- 108面经5-Go-字节暑期实习
- 109字节二面
- 110字节三面
- 111面经02-测开-百度提前批
- 112二面
- 113面经06-测试-海尔智家
- 114面经07-测开-蔚来
- 115面经09-测试-中望
- 116面经10-测开-ZEKU
- 117面经12-测试-科大讯飞
- 118面经15-测开-美团暑期实习
- 119面经16-测开-外企社招
- 120Nvidia四面
- 121面经2-前端-百度日常实习
- 122面经3-前端-得物面经
- 123面经4-前端-腾讯健康
- 124面经5-前端-字节面经
- 125面经6-前端-携程前端
- 126面经7-前端-顺丰
- 127面经9-前端-比特大陆日常实习
- 128面经10-前端-抖音
- 129面经11-前端-蔚来/百度/oppo
- 130百度提前批
- 131面经12-前端-知乎暑期实习
- 132知乎二面
- 133百度二面
- 134面经2-Android客户端-大疆
- 135二面
- 136面经3-客户端-字节暑期实习
- 137字节二面
- 138字节二面(深入项目,1h)
- 139面经5-客户端-字节
- 140面经6-客户端-字节
- 141算法
- 142面经3-NLP-科大讯法
- 143面经4-NLP-科大讯法
- 144面经7-游戏算法-莉莉丝
- 145面经10-算法
- 146面经11-算法-百度pnc暑期实习
- 147百度二面
- 148抖音一面
- 149嵌入式
- 150面经3-嵌入式-芯动科技
- 151面经4-嵌入式-韶音科技
- 152面经6-嵌入式-新华三