困擾已久的效率問題.看過jive熟悉模式的老大們進..

lovelorn發表於2004-07-13
就拿我們的J道論壇做例子

在列貼子主題列表處顯示格式為
---------------------------------
貼名 發貼者
xxxxxxx xxxx
---------------------------------


貼子主題 資料庫結構為
---------------------------------
貼名(threadName) 發貼者(userID)
varchar(255) int(9)
---------------------------------
注意,這裡為了程式檢索效率,我使用的不是發貼者使用者名稱儲存的,而是使用發貼使用者ID儲存(int型)

同時我做了User類,該類在例化後呼叫.getName()方法返回使用者名稱
這個User類必定在呼叫getName()方法的時候會執行一次select句子來取得返回結果
比如
User my = new User(userID);
String name=my.getName();
那麼這時肯定有個 select * from user where id=userID
然後把User類的變數賦值,比如使用者名稱,使用者性別,註冊時間等等

那麼,問題來了

我在列主題貼的時候,一頁顯示50條主題
比如就是
thread.列主題(50);
User author;
while(thread.Next()){
out.print("貼名:"+thread.getThreadName());
out.print("使用者ID:"+thread.userID());
//問題從這裡開始出現
author=new User(thread.userID());
out.print("使用者名稱:"+author.getName());
}

當然,這個程式是可以執行的,但我在列主題的時候,為了取得使用者名稱,不得不一次一次的new User(thread.userID())然後用getName()方法來取得使用者名稱,這樣肯定要一次一次的執行select * from user..這樣的句子,也就是說我列一次顯示50條主題就要執行51條sql句子...

不知道我這樣說大家是否明白,不知道這個問題應該如何解決?

謝謝各位!

相關文章