我只是不太確定這樣做的正確方法。我基本上有2張桌子。兩個表都有相同的結構。 Database1(當前數據平均20k行),Database2(數據累積,在任何給定時間可以超過1密耳行)。mySQL - 比較錶行
我想比較這兩個表,並給我從Database1中得到的結果,該結果在具有特定時間戳查詢的Database2中不存在。我所擁有並嘗試過的查詢需要很長時間才能進行搜索。
嘗試:
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中時,數據總是變化的(從Database1添加到Database2中(從Database1中複製並始終累加) – sgkdnay
有沒有真正快速的方法來做到這一點。在'player'和'snap'上應該有助於加入'id'(假設它們在表格中匹配)。你可能會更好地拋棄所有的數據平面文件並編寫一個程序來解析它以找出差異grep可能會這樣做很快),一旦你這樣做,你應該重新考慮你的數據庫設計.MySQL在1M +行表中是不錯的。爲什麼需要2? – Cfreak