有TABLEA 字段为 采购单号、行号、物料编码、入库日期 现想按照物料编码查询最大入库日期语句如下:SELECT 采购单号、行号、物料编码、入库日期 FROM TABLEA A WHERE 入库日期=(SELECT MAX(入库日期) FROM TABLEA B
WHERE A.物料编码=B.物料编码 GROUP BY 物料编码)查询结果可以查询出,但是查询速度过慢,我的查询记录有10多万条,半个小时不出结果,有没有执行速度比较快的语句。
WHERE A.物料编码=B.物料编码 GROUP BY 物料编码)查询结果可以查询出,但是查询速度过慢,我的查询记录有10多万条,半个小时不出结果,有没有执行速度比较快的语句。
GO
SELECT 采购单号,行号,物料编码,入库日期
FROM TABLEA A
WHERE 入库日期=(SELECT MAX(入库日期) FROM TABLEA B WHERE A.物料编码=B.物料编码)--去掉GROUP BY
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.入库日期>入库日期 )
--要是原来已有索引就不需要创建
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.物料编码)楼主还没现身就给加完整吧
FROM TABLEA A
inner join (
SELECT MAX(入库日期)日期,物料编码 FROM TABLEA GROUP BY 物料编码
)b on a.物料编码=b.物料编码 and a.入库日期=b.日期
试下