索引将与其他列一起存储吗? [mariadb]

时间:2019-05-03 11:31:27

标签: database indexing

有一张桌子。

tb_a

seq(pk) | name | type | regist_time

,有5条记录。

seq | name | type | regist_time  
-------------------------------
1   |  B   | 200  | 2019-05-03
-------------------------------
2   |  A   | 300  | 2019-05-03
-------------------------------
3   |  E   | 100  | 2019-05-03
-------------------------------
4   |  D   | 100  | 2019-05-03
-------------------------------
5   |  C   | 100  | 2019-05-03

并添加索引名称

index(name)

**问题**
名称是单独存储的吗?如下所示:

name
----
 A
----
 B
----
 C
----
 D
----
 E

还是与其他列一起存储?

seq | name | type | regist_time  
-------------------------------
2   |  A   | 300  | 2019-05-03
-------------------------------
1   |  B   | 200  | 2019-05-03
-------------------------------
5   |  C   | 100  | 2019-05-03
-------------------------------
4   |  D   | 100  | 2019-05-03
-------------------------------
3   |  E   | 100  | 2019-05-03

1 个答案:

答案 0 :(得分:0)

在大多数现代数据库系统中,当您在列上创建索引时,您可以认为该索引仅包含列的值和指向相关行的指针。它不包含任何其他列的内容(比这要复杂一些,但就我们的目的而言,这已经足够了)。

如果您有一个使用索引的查询,并且从数据库中检索了多列,则系统将从索引中提取“名称”,然后使用指针查找正确的行。然后从表中获取实际行以查找并返回所有其他数据