💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
### 为什么使用数据索引能提高效率 1. 数据索引是有序的 2. 在有序的情况下,通过索引查询一个数据是无需遍历索引记录的 3. 在极端情况下,数据索引的查询效率为二分法查询效率,趋近于log2(N) ### B+树索引和哈希索引的区别 B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层次的节点间有指针相互链接,是有序的 哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需要一次哈希算法即可,是无序的 ### 哈希索引的优势 等值查询 ### 哈希索引不适用的场景 1. 不支持范围查询 2. 不支持索引完成排序 3. 不支持联合索引的最左前缀匹配规则 ### B树和B+树的区别 1. B树每个节点都存储key和data,所有节点组成这棵树,所以叶子节点指针为NULL,叶子节点不包含任何关键字信息。 2. B+树所有的叶子节点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子节点本身依关键字的大小从小到大的顺序链接。 3. 所有的非终端节点都可以看成索引部分,节点中仅含有其子树根节点最大(或最小)关键字。(B树的非终节点也包含需要查找的有效信息) ### 为什么说B+树比B树更适合实际应用中操作系统的文件索引和数据库索引 1. B+树的磁盘读写代价更低 B+树的内部节点并没有指向关键字具体信息的指针,因此其内部节点相对B树更小 2. B+树查询效率更加稳定 由于非终点节点并不是最终指向文件内容的节点,而只是叶子节点中关键字的索引。所以任何关键字的查找必须走一条从根节点到叶子节点的路。所以关键字查询的路径长度相同,导致每一个数据的查询效率相当 ### 什么情况下应不建或少建索引 1. 表记录太少 2. 经常插入,删除,修改的表 ### 什么是表分区 表分区是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但底层却是由多个物理分区组成 ### 表分区和分表的区别 分表:指通过一定规则,将一张表分解成多张不同的表。比如将用户订单记录根据分成多个表 分表与分区的区别在于:分区从逻辑上来讲只有一张表,而分表则是将一张表分解成多张表