比如说我一个系统有10万个用户,当用户登陆的时候,查询数据库校验用户对不对。
有什么方法查询数据库比较快?
查询结果放到哪里比较好?
不知道说没说明白,希望大家多给意见。

解决方案 »

  1.   

    用hibernate吧
    ----------------
    用hibernate怎么做?能具体说说吗?谢谢!
      

  2.   

    hibernate 或许能改善查询速度  但是具体怎么做我也不清楚
    session?
      

  3.   

    ......
    hibernate最大的弱点就是大批量的查询。他的缓存机制限制着这一点。还不如用JDBC用Sql语句直接查询。
      

  4.   

    如果有百万条数据,就得考虑效率问题,我们来分析一下。
    假设你的用户验证就是一个ID加上密码(或者密码的digest)
    我们可以用一个SQL丢到服务器上执行:
    select password from user where userid=?
    返回的结果是一个密码或者没有,如果没有,说明ID出错,如果有密码返回,就比对密码(或者digest)
    这个SQL非常简单,只要你在userid字段上加了索引,那么运行的效率非常非常高,无需考虑效率问题。如果数据还要多(现在才可以称海量),可能你要想些技术上(软件上)的办法,而这些办法往往跟你系统的使用特性相关。
    比如这些用户有这样的特点-虽然总数多,但经常登录的不多。那么可以把分成2个表,一个表是经常登录用户表,一个是不经常登录用户表。验证的时候先到经常表中,如果没有ID就到不经常表中再去验证。只是举个例子而已,具体情况具体分析!
      

  5.   

    建了索引基本就没问题了,记得千万别用hibernate,sql就可以了
      

  6.   

    呵呵,Hibernate流行的时间不长,流毒却很深
      

  7.   

    hbwhwang(【生病了,好好休息中...】) 说得非常对。数据库本身已经采取了很多优化策略和机制,比如索引,在对建立了索引的字段进行条件查询时,因为已知记录内容都是有序的状态(无论正反),就会根据运算表达式来采用相应的最优化的查询方法,这些方法都是目前已知最优化的方法了,你再考虑别的算法都是多余。hbwhwang(【生病了,好好休息中...】) 说的用户分组,也是一个重点。当数据只在一张表中,连索引都还慢的话,就必须根据适当的规律进行表的拆分。对于大量的用户来说,总有可以分群的条件,比如按国家、城市、职业、性别,或者是在此系统中扮演的角色(初级用户表、VIP表、管理员表)。