MySQL/PHP проверяет активные отношения
У меня есть 2 большие таблицы, и мне нужно проверить, сколько отношений между ними все еще активны. Первая таблица представляет собой таблицу отношений, содержащую около 100 тыс. Строк (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)
Короче говоря, после полчаса процессорных мучений я отключил сервер MySQL и перезапустил его:S С тех пор я прочитал, что есть (или были) проблемы с предложениями WHERE IN в MySQL, поэтому я думаю, я не буду пробовать это снова.
ИМО эти два запроса должны быть одинаковыми, но я должен быть уверен на 100%. Поэтому все, что мне действительно нужно, это чтобы кто-то подтвердил мою догадку и сказал мне что-то вроде: "Не волнуйтесь, эти двое ДАЮТ такой же результат!"
Пока мы на этом... Таблица называется просто таблицей отношений, потому что это то, для чего я ее использую. Но у меня нет внешних ключей. Получу ли я что-нибудь связанное со временем, добавив их, или мне придется что-то перекодировать? (Я, вероятно, исследую это, прежде чем прочитаю ваш ответ, но, поскольку вы уже прочитали все это, вы можете добавить свои 2 цента:D)