2012-01-02 64 views
0

我在想,如果我们有两个共享一列的表,并且在第一个表中,此列是主键,但在第二个表中,另一个被选作主键。那么SQL是否将第二个表中的公共列视为另一个普通列?因此,如果基于公共列信息搜索第二表,则不存在优化,即两个相关表之间的主键是完全独立的?两个相关的表和主键独立性问题

+0

从逻辑上讲,两个表不可能“共享一列”。即使存在外键约束,它们也仅具有*值*。物理上,DBMS可以将实际值存储一次,并将外键值存储为指针。你有哪些SQL产品? – onedaywhen 2012-01-03 09:53:16

回答

3

是的,它们是独立的:主键对于表是完全独特的。

即使列的类型相同,但它们不会跨表共享,但您可以将表的主键作为外键共享到另一个表中。

不执行优化,因为您提到的第二列不是该表中的主键。数据库默认根据主键创建索引,这样可以提高查找表数据的效率。

+0

我相信这个问题与主键发生的搜索优化有关,因为它们被编入索引。 – 2012-01-02 06:47:53

+0

编辑.......... – 2012-01-02 06:51:53

+1

@Zsolt非常感谢好友!!! – 2012-01-02 09:06:01

0

如果在它们各自表中的两列之间建立了正确的PK-FK关系,那么应优化任何连接。