2010-08-19 46 views
1

使用像StackOverflow這樣的網站作爲示例:MySQL記錄存在優化

我有一個用戶,問題和用戶問題映射表。我的用戶的問題的映射表看起來像這樣:

userID (int 8) 
questionID (int 8) 

當顯示的受歡迎的問題的清單,我想,以紀念已被登錄的用戶提出的問題。 檢查每個問題是否存在用戶問題映射,或者從數據庫中獲取登錄用戶的所有用戶問題映射,並檢查服務器端是否更高效?

這是我希望看到的輸出的直觀例子:

問題1:什麼? (你問這個)
問題2:誰?
問題3:爲什麼? (你問了這個)

+0

究竟是什麼問題? – Sarfraz 2010-08-19 00:15:12

+0

我編輯過,以確切的問題。 – Chetan 2010-08-19 00:17:22

回答

3

該演示文稿應該始終留給表示層。

SELECT q.title, 
     CASE 
     WHEN uq.who_asked = @user_id THEN 1 
     ELSE 0 
     END AS isYourQuestion 
    FROM QUESTIONS q 
    JOIN USER_QUESTIONS uq ON uq.question_id = q.question_id 

然後,您可以使用isYourQuestion來標記的應用程序中顯示「(你問這個)」,如果:如果構建在數據庫中根據你所提到的業務規則呈現的邏輯是快值爲1.

+0

加一個,因爲這是一個好主意。然後,如果用戶提問映射位於不同的表中,則這是一個完全不同的故事。 – 2010-08-19 00:26:04

+0

@Michael Clerx:呃,如果是這樣的話,就是JOIN。 – 2010-08-19 00:27:27

+0

感謝您的回答!但是,用戶問題映射位於不同的表中,那麼我該怎麼做呢? – Chetan 2010-08-19 00:32:22