mysql - 将该列声明为唯一有什么意义吗?

标签 mysql sql sql-server database performance

当我从外部引用一个表时,将该列声明为唯一有什么意义吗?

我的意思当然是我所引用的那一列是独一无二的。

最佳答案

是的,请想象以下场景:

表 1 的 id 字段是您的外键。它是一个唯一索引。

Table 1:
________________________  
| id |  value | blah... |  
|----|--------|---------|  
| 0  |  val 1 | ....    |  
|----|--------|---------|  
| 1  |  val 2 | ....    |  
|----|--------|---------|  
 ...    ...       ...

现在表2有两种可能。

1) table_1_id 不唯一

Table 2:
_____________________________
| id |  table_1_id | blah... |  
|----|-------------|---------|  
| 0  |      1      | ....    |  <------ Duplicates are okay!
|----|-------------|---------|  <--/
| 1  |      1      | ....    |  
|----|-------------|---------|  
 ...    ...       ...

2) table_1_id 是唯一的

Table 2:
_____________________________
| id |  table_1_id | blah... |  
|----|-------------|---------|  
| 0  |      1      | ....    |  
|----|-------------|---------|  
| 1  |      n      | ....    |  <------- Cannot be 1, no duplicates
|----|-------------|---------|  
 ...    ...       ...

关于mysql - 将该列声明为唯一有什么意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636349/

相关文章:

sql - EAV 从扩展值表中选择查询

php - 这个 MySQL 查询是最好的主意吗?

mysql - 查询获取城市名称的 3 个变体

javascript - 使用PHP调用JS更改HTML表格单元格值

sql - 连接到 awk 脚本内的数据库

c# - 如何在不破坏订单的情况下进行 GROUP BY?

sql - 在 SQL Server 中搜索带双引号的字符串

c# - ReportingService2005 通过 WCF - 与模拟一起工作,但不与用户名/密码一起工作

mysql - 数据库自动创建bash脚本: What's wrong?

php - 条件下的 laravel 隐藏字段