多分类查询

有这样一个情况:现在有50个分类,每个类型我们只需要15条记录!该怎么做?
而每个类型的记录数大概都在数万条!

我遇到此种问题,本能的把它当做一般的问题来处理:你不是要50个分类,每种分类要15条吗? 好:
第一种方式:通过子查询方式实现,语句如下:
Slect n. * from news_object n where n.id in (select n.id from news_object n1 where n1.news_t_level=n.news_t_level and rownum>0 and rownum<16) order by n.createtime desc;
解释news_t_level是类型id 指向类型表news_t_level

第二种方式比较通俗易懂:先查类型表,根据类型id,再查news_object表。

第一种方式只发出一条sql,第二种方式需要发出51条sql。究竟哪种方式比较好(上面说了每种类型都有上万条的记录,甚至更多)?嘿嘿,我也不知道!本能的感觉第二种方式吧!

好了假定第二种方式好一点!
但是问题不总是那么简单?我们知道web开发中,比如新闻首页,它就遇到了类似的问题,我们把这些对象查上来放到50个list里,然后到action,再到页面,当我们刷新页面,它就会到数据库中进行查询(这里暂不考虑动态页面静态化,好像大的网站都这么做!),如果我坐在那里什么也不干,就刷新,刷新1w次!第一种情况发出1w条sql,第二种方式发出51w次sql,这时你说那种方式比较好?

我几乎疯了!!!!!

我是这么解决的,还是采用第二种方式 不同的是 我们要采用缓存方式 解决这个问题!!

究竟这些建立在假设的情况,是否完全正确,需要各位的指出!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值