为什么重复值高的列(比如性别)不能作为索引?

(1)看到一个关于索引的面试题:为什么重复值高的列(比如性别)不能作为索引?

我觉得是因为以这种列作为二级索引的话,那么这颗B+树会以该列的值作为节点的排序标准,如果列值相同就以主键作为排序标准。如果该列重复值低,就可以根据该节点下的列值找到下一层节点。否则若重复值高,难以找到下一层的节点。不知道这么解释对不对?

(2)在二级索引的B+树中,叶子节点存储的是该列值和主键值,非叶子节点存储的是该列值,主键值以及到下一层节点的页号。如果在遍历到非叶子节点时,查询条件中的该列值与该节点记录的列值都相同,那么此时比较的依据是什么呢?主键值吗?如果查询条件中没有加上主键值该怎么办?

(3)在聚簇索引B+树的叶子节点中,每一个节点记录的是同一数据页下的全部记录数吗?还是说是部分记录?

索引
mysql
数据库
2023-04-17 12:50:32
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
重庆大镖客

建表的时候设置级联删除啊:

CREATE TABLE 优惠商品表(
    ->        id INT PRIMARY KEY auto_increment,
    ->        goods_id TINYINT,
    ->        FOREIGN KEY (goods_id) REFERENCES 商品表(goods_id) ON DELETE CASCADE
    -> );

这样删除商品表里的数据时,优惠商品表里的数据就会被级联删除,不需要你自己管理。

分享
微博
QQ
微信
回复
2023-04-17 14:24:04
相关问题
InnoDB为什么需要自适应Hash索引
612浏览 • 1回复 待解决
不能报名公测为什么
5489浏览 • 1回复 待解决
OpenHarmony为什么首选JS作为应用开发语言
15151浏览 • 13回复 待解决
PostgreSQL group by 获取唯一并添加
960浏览 • 2回复 待解决
Harmony手表为什么不能安装apk啊?
2111浏览 • 1回复 待解决
为什么文章不能评论,有问题交流
3018浏览 • 1回复 待解决
为什么不能模拟加密门禁卡
4724浏览 • 1回复 待解决
Mysql索引什么结构?
844浏览 • 1回复 待解决
sql 如何约束多中所有均不同?
1186浏览 • 1回复 待解决
什么是PolarDB for PG可用架构?
1003浏览 • 1回复 待解决