2011-02-17 87 views
0

我正在使用MYSQL我有兩個表我想加入,隨着表變大我想知道什麼是更好的方式來查詢它們。這些表格用於爲各種用戶存儲圖片的網站。有點像Facebook。第一個表是具有Id和源位置字段的圖像表。而另一個表則被稱爲user_images,並帶有一個外部關鍵字,圖像標識將轉到圖像表中。表格沒有放在一起的原因是因爲多個用戶可以擁有相同的圖像,並且這樣做會消除冗餘。sql加入where子句

這裏是我的查詢看起來像把所有圖像的源位置爲特定用戶

SELECT i.source_location 
FROM user_images AS u 
INNER JOIN images AS i 
ON i.image_id = u.image_id 
WHERE u.user_id = 'USER' 

所以我的問題是,這將是更好的查詢它獲得更快的結果如下圖所示或這沒關係嗎?

SELECT i.source_location 
FROM 
(SELECT image_id 
FROM user_images 
WHERE user_id = 'USER') AS u 
INNER JOIN images AS i 
ON i.image_id = u.image_id 

基本上我認爲在做之前,地方的條款將加入使 更快的結果,因爲該數據庫將有一組較短的來比較,因爲連接表將是很多小。我不知道這是否正確。 什麼是最好的方式去做這件事?如果其他人有更好的方法來做這件事,請幫助我,因爲我看到這些表變得相當大。

+2

MySQL查詢優化器將兩者以同樣的方式運行。一般來說,不要擔心表演,直到真人投訴;屆時,您將擁有測試數據以驗證可能的解決方案! – Andomar 2011-02-17 17:58:10

+0

@Andomar - 你應該發佈這個答案,因爲它是這個問題的答案;) – Matten 2011-02-17 18:01:07

回答

-1

你的images表有一個user_id字段嗎?

如果是這樣,只是在INNER JOIN images ON(i.image_id = u.image_id AND i.user_id = 「USER」)