一 表结构:(只拣有用的说了!)1.交易流水表(TVA):
ID             主键
TERMINALID     终端机编号
2.终端机表(TEM)
TERMID         主键
DPCODTE        商户编号
3.商户表(ACC)
ACCID          主键
ACCNAME        商户名称(不知道为啥非整这么麻烦的表结构.....)二 SQL  select tva.id , tva.tem.acc.accname from TVA where 1=1 ;不知道为啥非整这么麻烦的表结构.....我想查交易流水的时候关联查出来所对应的商户名称 三 HIBERNATE 配的 *.hbm.xml 1.TVA.HBM.XML<class name="com.TVA" table="TVA">
   <id name="id" column="id" length="10">
      <generator class="sequence">
         <param name="sequence">SEQ_TVALIDTR</param>
      </generator>
   </id>
   <many-to-one name="tem" column="terminalid"
      class="com.TEM" not-found="ignore" insert="false" update="false" not-null="false">
   </many-to-one>

2.TERM.HBM.XML<class name="com.TEM" table="TEM">
   <id name="termid" column="Termid" length="8">
      <generator class="native" />
   </id>   <many-to-one name="acc" column="dptcode" class="com.ACC"
      not-found="ignore" insert="false" update="false" not-null="false">
   </many-to-one>
  3 ACC.HBM.XML<class name="com.ACC" table="acc">
   <id name="accid" column="accid" length="8">
      <generator class="native" />
   </id>
   <property name="accname" column="Accname"
      type="java.lang.String" update="true" insert="true" not-null="false"
   length="100" />简单的说就是 通过表TVA中的termianlid查找到表TEM中的记录,然后通过表TEM中的dpcode查找到ACC中的accname字段 ……四 问题现在交易流水表中有450万条记录 …… 程序跑起来十分的慢 …… 请问有没有什么方法在不改表结构的前提下 对它进行优化 !!热烈期盼中 …… 谢谢 !!!!!!!!!!!  

解决方案 »

  1.   

    tva.tem.acc.accname这个是什么东西?
      

  2.   


    SQL 写少了 应该是 select tva.id , tva.tem.acc.accname from TVA tva where 1=1 ; tva是TVA类 的同义词 
    tem是<many-to-one name="tem" column="terminalid" ……
    acc是<many-to-one name="acc" column="dptcode" class="com.ACC"  
      

  3.   

    最关键的是ACCNAME 列上一定要建索引。