独特指数放缓?

时间:2010-01-13 20:58:56

标签: sql mysql

是否会减慢查询时间以使用大量独特索引?我没有那么多我只是好奇,我想我已经听到了一些

  • id(primary auto_increment)
  • 用户名(唯一)
  • 密码
  • 盐(独特)
  • 电子邮件(唯一)

5 个答案:

答案 0 :(得分:6)

这取决于您使用的数据库服务器软件和表/索引类型。 只要你有任何类型的索引,插入就会变慢,但不一定很多 - 这也取决于表的大小。

general 中,唯一索引应该加速您使用的任何能够利用索引的SELECT查询

答案 1 :(得分:2)

它们会减慢插入和更新速度(因为必须检查每个插入和更新是否违反),但不应减慢选择速度。实际上,他们可以加快速度,因为优化器有更多的选择来用于查找数据。

答案 2 :(得分:1)

通常,拥有更多索引会降低插入,更新和删除的速度,但可以加快查询速度 - 假设您根据这些字段进行查询。

如果您需要一个唯一的索引来保证应用程序的一致性,那么您通常应该添加它,即使它会导致轻微的性能损失。最好是正确而不是快但错。

答案 3 :(得分:1)

每次向数据库表添加唯一键时,它都会添加非聚集索引。聚簇索引在主键上,并通过该列物理地对表中的数据进行排序。每个非聚集索引都会在表外部创建一些叶子,这些叶子基于唯一键进行排序。这样可以对唯一键进行更加一致的搜索,因为不再需要全表扫描。缺点是每次从表中插入,更新或删除行时,服务器都必须返回并更新表外部的所有叶子。如果您拥有少量唯一键,这通常不是问题,但是当您拥有许多唯一键时,它可以减慢响应时间。有关详细信息,请阅读维基百科文章here。 Msdn也有一篇好文章。

答案 4 :(得分:0)

查询时间,没有。但它们会减慢INSERT和DELETE时间,因为必须计算每个索引值,然后插入或删除它们。