想象你在一家餐厅里点餐。聚簇索引就像是按照菜单上的菜品顺序排列桌子的方式。每张桌子上摆放着一道完整的菜,桌子的位置由菜单上的顺序确定。当你根据菜单点餐时,服务员会直接把你点的菜端到你所在的桌子上,因为菜和桌子是一一对应的。
而非聚簇索引则像是按照菜单上的种类分类,把桌子安排在不同的区域,每个区域的桌子上都摆放着相同种类的菜。当你点餐时,服务员会根据你点的菜品种类将其送到相应区域的桌子上,而不是直接送到你所在的桌子上。
所以,聚簇索引将数据和索引存储在一起,数据按照索引的顺序排列;而非聚簇索引将索引和数据分开存储,索引指向数据的位置。这使得在聚簇索引下,数据的存储方式更像是一对一的关系,而在非聚簇索引下,数据的存储方式更像是一对多的关系。