我有一個非常大的值表。我們稱之爲表big
。我有一個叫做small
的小表。我想加入這些表格,但僅限於big
內的特定值。WHERE子句跟在JOIN
我可以說
SELECT a,b FROM big WHERE foo='bar';
我想加盟該結果與small
,說像得到的值:
SELECT a,b FROM big WHERE foo='bar'
LEFT JOIN (SELECT b as small_b,c,d FROM small) ON big.b=small.small_b
我不想拉big
一切,因爲這是很多東西,需要半分鐘。我只需要那個小的子集。我會如何去做這件事?
編輯:我已編輯我的查詢,以匹配WHERE
條款在最後。儘管我打電話給big
其中一個表,但它實際上有500,000行。我使用的測試用例查詢沒有使用在big
(big沒有值,其中foo ='bar')中找到的任何值,並且查詢仍然花費了7秒鐘。這真的很正常嗎?對我來說,這似乎非常緩慢。
您是否有機會爲我的編輯更新您的回覆?我知道我不應該改變這樣的問題,但我想弄清楚爲什麼它如此緩慢...... – MirroredFate
@MirroredFate我假設你有'foo'上的索引,對吧?否則,這將是一個全表掃描,看到加入是完全沒有行。 – dasblinkenlight
我以爲我做到了。我只是檢查了一下,顯然我只有foo作爲唯一鍵的一部分...所以我開始爲foo開始索引操作,並且它仍在運行......這應該有所幫助。假設一切正常,我會讓你知道在索引操作之後查詢需要多長時間。 – MirroredFate