MySQL / PHP检查活动关系

时间:2012-06-11 21:08:17

标签: mysql relationship database-relations

我有2个大桌子,我需要检查它们之间有多少关系仍处于活动状态。 第一个表是一个关系表,其中包含大约100k行(ID,ID_something1,ID_something2)。第二个表格稍大一些,约有6万个条目与特定关系有关系。随着时间的推移,一些关系被删除,但数据仍然存在。现在我很好奇有多少数据仍然存在。

所以我写了类似的东西:

SELECT count(tab_data.id) 
FROM tab_data, tab_rel
WHERE tab_data.id_rel = tab_rel.id

我在不到一秒的时间内得到了一个很好的(可信的)答案。

然后我开始质疑上层WHERE子句的准确性,并将其重写为应该给我确切需要的东西。所以我最终得到了这个:

SELECT count(tab_data.id) 
FROM tab_data, tab_rel
WHERE tab_data.id_rel IN 
(SELECT ID FROM tab_rel)

为了使故事简短(呃),经过半个小时的CPU折磨,我杀掉了MySQL服务器并重新启动它:S从那时起我读到MySQL中的WHERE IN子句有(或者是)问题,所以我想我不会再尝试那个了。

IMO这两个问题应该是一样的,但我需要100%肯定。所以我真正需要的是,有人确认我的预感并告诉我一些事情:“别担心,那些2会给出相同的结果!”

虽然我们正在使用它...这个表只是一个关系表,因为这就是我用它的原因。但我没有设置任何外键。我会通过添加这些来获得相关的时间吗?或者我是否还需要重新编码某些东西? (在我读你的答案之前,我可能会研究一下,但既然你已经阅读了所有这些,你可以投入2美分:D)

0 个答案:

没有答案