Я просто не слишком уверен в правильном способе этого. У меня в основном есть 2 таблицы. Обе таблицы имеют одинаковую структуру. База данных 1 (текущие данные в среднем 20 тыс. Строк), Database2 (накопление данных, может переходить на 1 мил строк в любой момент времени).mySQL - Сравнение строк таблицы
Я хочу сравнить обе таблицы и дать результат от Database1, который НЕ существует в базе данных2 с конкретным запросом метки времени. То, что у меня было и еще не было выполнено, слишком долго для поиска.
Пробовал:
select distinct player from Database1
where not exists (select player from Database2 where snap = 1340981695)
SELECT Database1.player FROM Database1
INNER JOIN Database2 ON Database1.player NOT IN (Database2.player) AND Database2.snap = 1340981695
GROUP BY Database1.player
select distinct Database1.player from Database1
left join Database2 on Database1.player not in (Database2.player)
and Database2.snap = 1340981695
Я до сих пор не могу получить мою голову обернутые вокруг этого. Спасибо за помощь.
Просьба показать структуру и индексы таблицы – Cfreak
Обе таблицы имеют id, player, castle, xaxis, yaxis, snap и id, являющиеся первичным ключом. Никакие данные не всегда одинаковы, всегда меняются (добавляются из Database1 в Database2 (скопированы из Database1 и всегда накапливаются) при создании новых данных и помещаются в Database1. – sgkdnay
На самом деле не будет быстрого способа сделать это. на 'player' и на' snap' должны помочь, так как они присоединяются к 'id' (если они совпадают в таблицах). Возможно, вам лучше сбросить все плоские файлы данных и написать программу для ее анализа, чтобы найти разницу (grep, вероятно, сделает это очень быстро) .После этого вы должны переосмыслить свой дизайн базы данных. MySQL отлично справляется с таблицами строк 1M +. Почему потребность в 2? – Cfreak