如何在mysql中创建多级索引,如何找出一列是多级索引的?

cgvd09ve  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(540)

我有一张“活动”桌。它由大约100万条记录组成。它的柱子是分开的,
id(pk)、u\u id(fk)、cl\u id(fk)、活动日志
默认情况下,id(pk)是索引的,我已经为u\u id和cl\u id创建了自己的索引,

ALTER TABLE activities ADD INDEX(u_id,cl_id);

现在,如果可能的话,我想为clu id(fk)或id(pk)或这两个列创建一个多级索引。如何使用查询创建多级索引?
如何找出表中多级索引的列?我尝试过这个查询,但它只显示索引的列,

SHOW indexes FROM activities;

多级索引和非聚集索引是否相同?

toe95027

toe950271#

我不知道什么是“多级”索引。但也有“综合”指数,如

INDEX(last_name, first_name)

这对我很有用

WHERE last_name = 'James'
  AND first_name = 'Rick'

甚至

WHERE last_name = 'James'
  AND first_name LIKE 'R%'

在mysql(尤其是innodb)中 PRIMARY KEY 总是一个唯一的索引,它与数据“聚集”在一起。也就是说,通过pk查找一行是非常有效的。结构始终是树。
“次键”也是btree,但叶节点包含pk。因此,需要进行第二次查找来完成查询(这种区别很少一文不值。)
主键和/或辅助键可以是“复合键”。
宣布 FOREIGN KEY 如果没有合适的索引,则添加辅助索引( PRIMARY 或二级)索引,该索引以fk中的列开始。
以下是多余的,应避免:

PRIMARY KEY(id),
INDEX(id)           -- DROP this

索引顺序
哎哟!近二十年来,我从未听说过这种过时的索引方法。
这个问题与“多层次”索引的定义等问题有关。快跑!换学校。或者至少要明白这已经不再被认为是可行的了。
mysql使用“btrees”进行大多数索引。它是几十年前发明的,基本上已经被消灭了。而且,在很大程度上,散列作为一种磁盘索引技术已经被淘汰了。
mysql的btrees可以处理多个列,如上面的示例所示。

相关问题