运维开发网

ruby-on-rails – 数据库中非唯一索引的目的是什么?

运维开发网 https://www.qedev.com 2020-06-01 11:58 出处:网络 作者:运维开发网整理
我一直在搜索,但似乎无法在数据库中找到唯一和非唯一索引概念背后的适当解释. 例如,在Rails中,您可以为给定字段创建唯一且非唯一的索引,如http://railsguides.net/advanced-rails-model-generators/所述 我不明白的是:如果索引的目的是“设置快捷方式”到表中的值位置以便更快地访问它,那么多个值如何共享相同的索引? 比方说,我将电子邮件存储在一个表中
我一直在搜索,但似乎无法在数据库中找到唯一和非唯一索引概念背后的适当解释.

例如,在Rails中,您可以为给定字段创建唯一且非唯一的索引,如http://railsguides.net/advanced-rails-model-generators/所述

我不明白的是:如果索引的目的是“设置快捷方式”到表中的值位置以便更快地访问它,那么多个值如何共享相同的索引?

比方说,我将电子邮件存储在一个表中,我想索引它们的值位置.

如果到目前为止,我做对了,如果我有非唯一索引,那么DB可以将foo @ bar.com索引到位置150,bar @foo.com也索引到位置150.

因此,如果我最终在位置150处说出100个不同的值,那么如果DB仍然必须搜索150处的所有值以找到我需要的确切记录,那么这首先是否会破坏索引的目的?

这有什么意义?

谢谢

在示例电子邮件应用程序的数据模型中,向position属性添加非唯一索引是没有意义的,因为每个消息只有一个位置,每个位置只包含一个消息;在这种情况下,索引应该是唯一的.

但请考虑一个可能的“发件人”属性.许多邮件可以来自同一个发件人.如果您的应用程序具有查找来自特定发件人的所有邮件的功能,那么在发件人列上添加非唯一索引以提高该操作的性能是有意义的.

0

精彩评论

暂无评论...
验证码 换一张
取 消