mysql唯一变非唯一_mysql 5.0索引 – 唯一vs非唯一

UNIQUE和PRIMARY KEY是约束,而不是索引。虽然大多数数据库通过使用索引来实现这些约束。除了索引之外,约束的额外开销是微不足道的,尤其是当您计算跟踪和修正无意的重复的成本时,(当它们发生时)。

如果你有高选择性,索引通常更有效。这是不同值的数量与总行数的比率。

例如,在社会安全号码列中,您可能有100万行包含100万个不同的值。所以选择性是1000000/1000000 = 1.0(虽然有罕见的历史例外,SSN的意图是唯一的)。

但是,该表中的另一列,“gender”在一百万行中只能有两个不同的值。 2/1000000 =非常低的选择性。

具有UNIQUE或PRIMARY KEY约束的索引保证具有1.0的选择性,因此它将始终与索引一样有效。

您询问了主键和唯一约束之间的区别。主要是,每个表只能有一个主键约束(即使该约束的定义包含多个列),而您可以有多个唯一约束。具有唯一约束的列可以允许NULL,而主键约束中的列不能允许NULL。否则,主键和唯一的在它们的实现和它们的使用非常相似。

你在一个评论中询问是否使用MyISAM或InnoDB。在MySQL中,他们使用术语存储引擎。这两个存储引擎之间有一些细微的差别,但主要的是:

> InnoDB支持事务,因此您可以选择回滚或提交更改。 MyISAM有效地总是自动提交。

> InnoDB强制外键约束。 MyISAM不强制或甚至存储外键约束。

如果这些功能是您在应用程序中需要的东西,那么您应该使用InnoDB。

为了回应你的意见,这不是那么简单。 InnoDB在很多情况下实际上比MyISAM更快,所以它取决于你的应用程序的选择,更新,并发查询,索引,缓冲区配置等的组合。

与大多数性能相关的问题,为应用程序回答它的唯一方法是使用您的应用程序和代表性的数据样本测试这两个配置,并测量结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值