困扰已久的效率问题.看过jive熟悉模式的老大们进..

lovelorn 04-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句子...

不知道我这样说大家是否明白,不知道这个问题应该如何解决?

谢谢各位!