2012-02-01 67 views
1

我的問題是有什麼辦法來更好地管理這個數據庫實現。獲取user_name的有效方法

背景:

網頁與MySQL,PHP和JavaScript的工作。

下表(簡化討論)假設:

* USER_TABLE *

user_id (PK) 
user_name 

* thread_table *

thread_id (PK) 
user_id (Index) 
thread_title 

我想用主題的標題列表的視圖以及用戶發佈它們。

因此,這將是我平時的查詢:

SELECT thread_title, thread_table.user_id, user_name 
FROM thread_table INNER JOIN user_table 
WHERE user_table.user_id = thread_table.user_id 

我的問題是,這將是最有效的方式(快),以獲得具有USER_ID的USER_NAME?

這是一個簡化的例子,但我有更復雜的查詢,加入不同的表,並且只有加入另一個表才能獲得user_name是「痛苦」的。

那麼我該怎麼做才能提高執行效率呢?至少我應該使用散列鍵爲user_table創建一個內存表,以便更好地獲取具有user_id的user_name?

謝謝!

回答

0

這是正確的實現。如果JOIN對你來說很痛苦,那麼你正在使用錯誤的工具! JOIN是SQL的一個固有部分,並且您需要使用JOIN來檢索特定信息並不意味着您應該更改模式。

如果這是您在其他查詢中反覆使用的常見模式,那麼它是視圖的理想選擇。然後,您可以在其他查​​詢中使用該視圖,並消除某些鍵入。

如果表現真的是一個問題,您可以開始研究非等化,但我沒有意識到您處於這個階段。發佈您的查詢時間和EXPLAIN PLAN的輸出將有助於進一步診斷。

+0

如果您覺得查詢速度慢,請在'thread_table.user_id'上添加索引 – 2012-02-01 14:55:56

相關問題