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)

0 ответов

Другие вопросы по тегам