Database 多个单列索引的数据库结构

Database 多个单列索引的数据库结构,database,indexing,Database,Indexing,假设我有一个表业务,我在“country”列上创建了一个索引 根据我的理解,DB将把表分成(某种)块,其中一个或多个块是基于每个国家的。像这样: chunk1=美国国家/地区的记录 chunk2=美国国家/地区的记录 chunk3=中的国家/地区记录 chunk4=新西兰国家/地区的记录 如果我现在在“businessType”列上创建一个单独的索引,那么数据库结构会是什么样子 DB是否会创建两个单独的数据副本,一个按国家索引,一个按业务类型索引 或 DB是否会创建数据块,以便每个数据块包含每个

假设我有一个表业务,我在“country”列上创建了一个索引 根据我的理解,DB将把表分成(某种)块,其中一个或多个块是基于每个国家的。像这样:

chunk1=美国国家/地区的记录

chunk2=美国国家/地区的记录

chunk3=中的国家/地区记录

chunk4=新西兰国家/地区的记录

如果我现在在“businessType”列上创建一个单独的索引,那么数据库结构会是什么样子

DB是否会创建两个单独的数据副本,一个按国家索引,一个按业务类型索引

DB是否会创建数据块,以便每个数据块包含每个国家/地区和每个业务类型的数据?像这样

chunk1=国家/地区记录=美国&业务类型=IT

chunk2=国家/地区记录=美国&业务类型=金融

chunk3=国家/地区记录=美国&业务类型=金融

chunk4=国家/地区记录=美国&业务类型=金融

chunk5=国家/地区的记录=IN&businessType=IT

chunk6=国家/地区的记录=IN&businessType=IT

chunk7=国家/地区记录=行业/业务类型=农业

假设我有一个表业务,并且根据我的理解,我在“country”列上创建了一个索引,DB将把表分成(某种)块,其中一个或多个块是基于每个国家的

没有。你的理解是错误的

该表不会被拆分,它将有一大块记录,首先大致按插入顺序排列

如果愿意的话,索引是按块组织的(尽管它通常更像一个树结构)

索引存储索引列值和记录在表本身中的位置指针

如果我现在在“businessType”列上创建一个单独的索引,那么数据库结构会是什么样子

表存储结构根本不会改变。您将只需要一些附加索引

DB是否会创建两个单独的数据副本,一个按国家索引,一个按业务类型索引

如果在“businessType”列上创建单独的索引,那么您将拥有一个仅按“businessType”组织的树结构。这完全独立于前面创建的其他索引

DB是否会创建数据块,以便每个数据块包含每个国家/地区和每个业务类型的数据

如果您在(国家,业务类型)上创建一个复合索引,那么您确实会得到一个被两列“分块”的索引:树的第一级将在国家上分派,第二级(对于给定的国家)将在业务类型上分派

假设我有一个表业务,并且根据我的理解,我在“country”列上创建了一个索引,DB将把表分成(某种)块,其中一个或多个块是基于每个国家的

没有。你的理解是错误的

该表不会被拆分,它将有一大块记录,首先大致按插入顺序排列

如果愿意的话,索引是按块组织的(尽管它通常更像一个树结构)

索引存储索引列值和记录在表本身中的位置指针

如果我现在在“businessType”列上创建一个单独的索引,那么数据库结构会是什么样子

表存储结构根本不会改变。您将只需要一些附加索引

DB是否会创建两个单独的数据副本,一个按国家索引,一个按业务类型索引

如果在“businessType”列上创建单独的索引,那么您将拥有一个仅按“businessType”组织的树结构。这完全独立于前面创建的其他索引

DB是否会创建数据块,以便每个数据块包含每个国家/地区和每个业务类型的数据


如果您在(国家,业务类型)上创建一个复合索引,那么您确实会得到一个被两列“分块”的索引:树的第一级将在国家上分派,第二级(对于给定国家)将在业务类型上分派。

,还有一些RDBMS,例如MySQL/InnoDB,实际上将表本身存储为一个b-树,并且所有索引都指向一个主索引。@reve_etrange:是的,Oracle也有这个功能,他们称之为索引组织表。但这需要有一个主键。实际上,您将整个记录存储在主键索引中(这样的表在物理上并不存在)。正如@Thilo所说,有些RDBMS,如MySQL/InnoDB,实际上将表本身存储为b树,并且所有索引都引用一个主索引。@reve_etrange:是的,Oracle也有这样的索引,他们称之为索引组织表。但这需要有一个主键。实际上,您将整个记录存储在主键索引中(而这样的表在物理上并不存在)。表存储结构根本不会改变。我不确定我是否理解。当我们创建索引时,记录不会被重新排列以正确地服务于indexOk,我想我现在明白了。我的问题基本上是关于聚集索引和非聚集索引之间的区别表存储结构根本不会改变。我不确定我是否理解。当我们创建索引时,记录不会被重新排列以正确地服务于indexOk,我想我现在明白了。我的问题基本上是关于聚集索引和非聚集索引之间的区别