simplefare表
每条记录包含 一条运价的基本信息 以及 运价所适用的代理人结算号 protocalno 也就是说,表中的记录条数为 运价信息 * 结算号  当运价的运价编号(fare_number)和运价发布日期(app_date)相同时 认为它是唯一一条运价信息现在需要查询运价信息,要求无重复记录用哪种方法比较快点,我试过distinct 和 group by
都觉得慢,表中大约有10000+条记录,以后还会更多 请高手指点,我的问题有什么没说明白的,可以跟帖问,谢谢!

解决方案 »

  1.   

    select t.FARE_NUMBER, t.APPROVED_DATE, max(t.DEPARTURE), max(t.DESTINATION), max(t.OW_ADULT_FARE), max(t.RT_ADULT_FARE) from simplefare t, agent_fare a  where t.APPROVED_DATE = a.approved_date and t.FARE_NUMBER = a.fare_number group by t.FARE_NUMBER, t.APPROVED_DATE这是我自己写的,但是慢
      

  2.   

    t.FARE_NUMBER, t.APPROVED_DATE这两个字段加索引应该会快一点
      

  3.   

    记录不算多,这里看不明白表结构和主键,查询中怎么会有那么多max应该把索引建好agent_fare a,在查询中时起什么作用的
    好像在输出中没有用的, 多余的吗?
    select t.FARE_NUMBER, t.APPROVED_DATE, t.DEPARTURE, 
      t.DESTINATION,t.OW_ADULT_FARE, t.RT_ADULT_FARE 
    from simplefare t
    where exists(
    select * from , agent_fare a 
    where t.APPROVED_DATE = a.approved_date and t.FARE_NUMBER = a.fare_number 
    )
      

  4.   

    回楼上的,max函数没有实际意义,只是因为用了group by,为了让语法通过才用的。
    agent_fare表在输出中的确没用,和simplefare表联查是为了剔除掉simplefare表中的无用数据,也就是说只查fare number在agent_fare中存在的数据(从simplefare)表中。
      

  5.   

    simplefare表 主键??????????  t.FARE_NUMBER, t.APPROVED_DATE, ???agent_fare a 主键???
    过滤数据不一定必须用连接,这可能产生没用的重复输出记录
      

  6.   

    试试:
    select t.FARE_NUMBER,
           t.APPROVED_DATE,
           max(t.DEPARTURE),
           max(t.DESTINATION),
           max(t.OW_ADULT_FARE),
           max(t.RT_ADULT_FARE)
      from simplefare t
     where t.APPROVED_DATE||t.FARE_NUMBER in (select distinct a.approved_date||a.fare_number from agent_fare a)
     group by t.FARE_NUMBER, t.APPROVED_DATE
    或:
    select t.FARE_NUMBER,
           t.APPROVED_DATE,
           max(t.DEPARTURE),
           max(t.DESTINATION),
           max(t.OW_ADULT_FARE),
           max(t.RT_ADULT_FARE)
      from simplefare t
     group by t.FARE_NUMBER, t.APPROVED_DATE
    having t.APPROVED_DATE || t.FARE_NUMBER in (select distinct a.approved_date ||
                                                                a.fare_number
                                                  from agent_fare a)