有TABLEA 字段为  采购单号、行号、物料编码、入库日期  现想按照物料编码查询最大入库日期语句如下:SELECT 采购单号、行号、物料编码、入库日期  FROM TABLEA  A WHERE 入库日期=(SELECT MAX(入库日期) FROM TABLEA B
WHERE A.物料编码=B.物料编码 GROUP BY 物料编码)查询结果可以查询出,但是查询速度过慢,我的查询记录有10多万条,半个小时不出结果,有没有执行速度比较快的语句。

解决方案 »

  1.   

    TRY:CREATE INDEX IDX_tablea_入库日期 ON TABLEA(入库日期)
    GO
    SELECT 采购单号,行号,物料编码,入库日期 
    FROM TABLEA A 
    WHERE 入库日期=(SELECT MAX(入库日期) FROM TABLEA B WHERE A.物料编码=B.物料编码)--去掉GROUP BY 
      

  2.   

    SELECT 采购单号、行号、物料编码、入库日期 FROM TABLEA A WHERE 入库日期=(SELECT MAX(入库日期) FROM TABLEA B
    WHERE A.物料编码=B.物料编码) --去掉GROUP BY 物料编码,分组多花时间create index TABLEA_index on TABLEA(物料编码,入库日期) --建索引不知道下面的怎么样
    SELECT 采购单号、行号、物料编码、入库日期 FROM TABLEA A 
    WHERE exists(select 1 from TABLEA where A.物料编码=物料编码 and A.入库日期>入库日期 )
      

  3.   


    --要是原来已有索引就不需要创建
    CREATE INDEX IDX_tablea_入库日期 ON TABLEA(入库日期)
    CREATE INDEX IDX_tablea_物料编码 ON TABLEA(物料编码)
    GO
    SELECT 采购单号,行号,物料编码,入库日期 
    FROM TABLEA A 
    WHERE 入库日期=(SELECT MAX(入库日期) FROM TABLEA B WHERE A.物料编码=B.物料编码)楼主还没现身就给加完整吧
      

  4.   

    SELECT a.采购单号,a.行号,a.物料编码,a.入库日期 
    FROM TABLEA A  
    inner join (
    SELECT MAX(入库日期)日期,物料编码 FROM TABLEA  GROUP BY 物料编码
    )b on a.物料编码=b.物料编码 and a.入库日期=b.日期
    试下