2012-03-08 101 views
0

我目前有兩個表,一個是idtracker,它有大約30,000行,另一個是具有大約150,000行的download_tracker。我在寫一個SQL查詢,比較兩個表中的uuid和pluginId列,並返回找到的匹配項。這是我目前有:在SQL中比較兩個大表

SELECT idtracker.uuid 
FROM idtracker, download_tracker 
WHERE idtracker.uuid = download_tracker.pluginId 

問題是,當我嘗試運行它時,這個命令幾乎關閉了我的apache服務器。我猜測這樣做的原因是有很多行,並將每一行與對面表中的每一行進行比較需要很長時間。有沒有什麼辦法可以解決這個問題並得到相同的結果,或者一旦他們得到這麼大的代價,就無法比較表中的列。

此外,我真正需要的是計數,所以我嘗試使用COUNT(DISTINCT ...),並且似乎沒有幫助時間。

+6

呃......那其實不是很大。 – 2012-03-08 20:05:28

+0

你可以發表表格的結構(帶約束)嗎? – 2012-03-08 20:06:03

+2

那些真的是**不是**大表 – Lamak 2012-03-08 20:06:28

回答

7

這不是很多數據,它不應該關閉您的服務器。它應該在幾秒鐘內返回。

嘗試在兩個表添加索引:

idtracker(uuid) and download_tracker(pluginId) 
+0

只是添加索引 – jle 2012-03-08 20:06:35

1

你有兩個idtracker.uuid和download_tracker.pluginId指標? 30,000行與150,000行確實不是很多。當然,一個問題可能是返回的數據量,在這種情況下,您應該考慮對結果進行分頁。