假设我有一个表Business,我在列'country'上创建了一个索引 根据我的理解,数据库会将表拆分为(某种)块,其中一个或多个块专用于每个国家/地区。像这样:
chunk1 =国家/地区的记录
chunk2 =国家/地区的记录
chunk3 =国家/地区的记录
chunk4 =国家新西兰的记录......
如果我现在在'businessType'列上创建单独的索引,那么数据库结构将如何?
数据库是否会创建2个单独的数据副本,一个按国家/地区索引,另一个由businessType索引?
OR
数据库是否会创建块,以便每个块包含基于每个国家/地区和每个businessType的数据?像这样
chunk1 = country = US&的记录businessType = IT
chunk2 = country = US&的记录businessType =财务
chunk3 = country = US&的记录businessType =财务
chunk4 = country = US&的记录businessType =财务
chunk5 =国家/地区的记录= IN& businessType = IT
chunk6 =国家/地区的记录= IN& businessType = IT
chunk7 =国家/地区的记录= IN& businessType =农业......
答案 0 :(得分:1)
假设我有一个表Business,我在列'country'上创建一个索引根据我的理解,DB会将表拆分为(某种)块,其中一个或多个块专用于每个国家/地区
不。你的理解是错误的。
该表不会被分解,它会将记录放在一个大块中,首先按粗略的顺序排列。
索引是以块的形式组织的,如果你愿意的话(尽管它通常更像树结构)。
索引存储索引列值和指针表中记录的位置。
如果我现在在列'businessType'上创建一个单独的索引,那么数据库结构将如何显示?
表存储结构根本不会改变。你只需要一些额外的索引。
数据库是否会创建2个单独的数据副本,一个按国家/地区索引,另一个由businessType索引?
如果您在“businessType”列上创建单独的索引,那么您将只有'businessType'组织树结构。这完全独立于您之前创建的其他索引。
数据库是否会创建块,以便每个块包含基于每个国家/地区和每个businessType的数据?
如果您在(country,businessType)上创建复合索引,那么您确实会得到一个由两列“分块”的索引:树的第一级将在国家/地区发送, businessType上的第二个(针对特定国家/地区)。