我写得sql如下:
select * from T_00_EXPO2_DZ_MX X where (select count(1) from T_00_EXPO2_DZ_MX Y where X.ticket_seqno=Y.ticket_seqno 
and X.dz_stat='1' and Y.dz_stat='1')>1;
但是由于表中数据有200万条,查询速度慢,大家有没有更好的办法

解决方案 »

  1.   

    select * from T_00_EXPO2_DZ_MX X 
    where exists (select dz_stat from T_00_EXPO2_DZ_MX Y
    where Y.dz_stat = X.dz_stat and Y.dz_stat = '1' and Y.rowid != X.rowid);
      

  2.   

    select * from T_00_EXPO2_DZ_MX X 
    where (
           select count(1) from T_00_EXPO2_DZ_MX Y 
            where X.ticket_seqno=Y.ticket_seqno 
              and X.dz_stat='1' 
              and Y.dz_stat='1'
          )>1 没头没尾呀,给个执行计划,看看你是不是缺少索引?
      
      

  3.   

    建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试。   
      

  4.   

    select * from T_00_EXPO2_DZ_MX X 
    where ticket_seqno in (select ticket_seqno
    from T_00_EXPO2_DZ_MX 
    group by ticket_seqno 
    having count(1)>1
    ); 
      

  5.   

    建表语句
    CREATE TABLE FAPDB.T_00_EXPO2_DZ_MX
    (
      FILENAME            VARCHAR2(100 BYTE),
      POST_AGENT          VARCHAR2(10 BYTE),
      REC_NUM             NUMBER(8),
      DZ_STAT             VARCHAR2(1 BYTE),
      EXPO_CODE           VARCHAR2(4 BYTE),
      BRCH_AGENT          VARCHAR2(10 BYTE),
      SAM_NO              VARCHAR2(8 BYTE),
      DEV_SEQNO           VARCHAR2(10 BYTE),
      TICKET_SEQNO        VARCHAR2(10 BYTE),
      EXPO_TICKKIND       VARCHAR2(2 BYTE),
      EXPO_DATE           VARCHAR2(8 BYTE),
      TICKET_PRICE        NUMBER(12,2),
      SALE_TYPE           VARCHAR2(2 BYTE),
      SALE_CHANNEL        VARCHAR2(2 CHAR),
      PAY_TYPE            VARCHAR2(2 BYTE),
      SALE_FLAG           VARCHAR2(1 BYTE),
      DEV_TIME            VARCHAR2(14 BYTE),
      OPER_NO             VARCHAR2(8 BYTE),
      PROMOTION_PRICE     NUMBER(7,2),
      PROMOTION_KIND      VARCHAR2(4 BYTE),
      TAC_CODE            VARCHAR2(8 BYTE),
      TZ_BRCH_AGENT       VARCHAR2(10 BYTE),
      TZ_SAM_NO           VARCHAR2(8 BYTE),
      TZ_DEV_SEQNO        VARCHAR2(10 BYTE),
      TZ_TICKET_SEQNO     VARCHAR2(10 BYTE),
      TZ_EXPO_TICKKIND    VARCHAR2(2 BYTE),
      TZ_EXPO_DATE        VARCHAR2(8 BYTE),
      TZ_TICKET_PRICE     NUMBER(12,2),
      TZ_SALE_TYPE        VARCHAR2(2 BYTE),
      TZ_SALE_CHANNEL     VARCHAR2(2 BYTE),
      TZ_PAY_TYPE         VARCHAR2(2 BYTE),
      TZ_SALE_FLAG        VARCHAR2(1 BYTE),
      TZ_DEV_TIME         VARCHAR2(14 BYTE),
      TZ_OPER_NO          VARCHAR2(8 BYTE),
      TZ_PROMOTION_PRICE  NUMBER(7,2),
      TZ_PROMOTION_KIND   VARCHAR2(4 BYTE),
      TZ_TAC_CODE         VARCHAR2(8 BYTE),
      TZ_CHECKSTAT        VARCHAR2(2 BYTE)          DEFAULT 0
    )
    TABLESPACE FAPDBSPACE
    PCTUSED    0
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
    LOGGING 
    NOCOMPRESS 
    NOCACHE
    NOPARALLEL
    MONITORING;
    CREATE INDEX FAPDB.I_00_EXPO2_CODE ON FAPDB.T_00_EXPO2_DZ_MX
    (EXPO_CODE)
    LOGGING
    TABLESPACE FAPDBSPACE
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
    CREATE INDEX FAPDB.I_00_EXPO2_FILENAME ON FAPDB.T_00_EXPO2_DZ_MX
    (FILENAME)
    LOGGING
    TABLESPACE FAPDBSPACE
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;