我是初次涉及到大型数据库的编程,在写sql语句时存在一些疑问:  
表的数据比较大,又要多表查询,是不是逐个表进行查询效率比较高,还是通过一个较复杂的sql语句(from中存在多个表,有的进行连接,where中设定条件)得出最终结果效率比较高?
  
疑问:对于较大的表之间进行相乘,是不是很耗时? 

解决方案 »

  1.   

    看你的表的大小了.
    一般100万记录以内,只要服务器性能没问题.你怎么查询都应给不会有多大影响.(前提是你的SQL经过优化)
    ,若确实表数据量比较大,可以考虑一些办法提高性能。
    比如,建立分区表、建立cluster表,建立索引、使用系统提示等等。而且要具体情况具体分析,你仅仅说了个大概,很难有人给出具体答案的。
      

  2.   

    query = "SELECT "+
    "EXAM_NORMSELE.STUD_NUM, "+
    "EXAM_NORMSELE.COUR_NUM, "+
    "EXAM_NORMSELE.COUR_SEQ, "+
    "COUR_BAS_050517.COUR_NAM, "+
    "EXAM_ROOM.ROOM_NUM, "+
    "EXAM_MANG.EXAM_WEEKDAY, "+
    "EXAM_MANG.EXAM_BGTIME, "+
    "EXAM_MANG.EXAM_PERIOD, "+
    "EXAM_MANG.ORG_WAY "+
    "FROM "+
    "COUR_BAS_050517, EXAM_NORMSELE LEFT OUTER JOIN EXAM_ROOM "+
    "ON EXAM_NORMSELE.ROOM_SERIALNO=EXAM_ROOM.ROOM_SERIALNO, EXAM_MANG "+
    "WHERE "+
    "(EXAM_NORMSELE.STUD_NUM = \'"+studNum+"\') "+
    "and (COUR_BAS_050517.COUR_NUM=EXAM_NORMSELE.COUR_NUM) "+ 
               "and (EXAM_NORMSELE.EXAM_SERIALNO=EXAM_MANG.EXAM_SERIALNO) "+ 
               "order by EXAM_MANG.EXAM_WEEKDAY,EXAM_MANG.EXAM_BGTIME";
    是如上面那样的SQL语句,一下子得出结果,效率较高,还是如下面的代码,
    select ..., exam_serialno, room_serialno from exam_normsele where stud_num =\'"+studNum+'";
    roomNum = rs.getString("room_serialno");
    ...
    select..., room_num from exam_room where room_serialno = \'"+roomNum+\'";
    逐个表的查询,不涉及到表的相乘,得效率高?