我有两张桌子:
1. Person
2. Record
表person
中的多行可以连接到record
的一行。
但是如果我有一个人连接到多个记录,那么连接它的最佳方法是什么?
记录1号= 1号人, 2号人,3号人员 记录2 = 4号人,5号人, 2号人
这是创建名为relations
的新表并添加两列的最佳方式:recordid
,personid
。所以它看起来像这样:
recordid | personid
1 1
1 2
1 3
2 4
2 5
2 2
我这样做是因为如果用户更改了一个人的数据,它也应该显示在其他人的同一个人的记录中。
基本上,我会通过这样做来获得person
中来自record
的行的哪些行:
SELECT `record`.`data` FROM `record` LEFT JOIN `relation` ON `record`.`id`=`relation`.`recordid` LEFT JOIN `person` ON `relation`.`personid`=`person`.`id`
我会使用这种连接来获取数据和所有搜索记录(通过名称,姓氏和许多其他参数),并且我可以拥有超过10万行的人数和超过人员表中有100k行。
还有其他一些更简单,更快捷的方式来做这样的事情吗?
答案 0 :(得分:0)
是的,这是正确的用法。
但是,根据您的需要,内部联接可能比左外部联接更快,特别是因为您说的超过10万条记录等等。当然,它只会获取存在条目的记录和匹配。
此外,根据运行查询后的操作,您可以编写单独的查询来查找匹配且不匹配的记录并相应地显示。