解决方案 »
- 为什么创建数据库会出现这个东西?
- 求个按时间间隔汇总,如5分钟的。。SQL
- 初学问题,我觉得有点难,得到指定数量的记录。详情请进!
- 存储过程中很复杂的字符串截取,弄了几天,我头大了
- 在sql server中like的参数化比直接调用慢,为什么
- 再问sql server 2000的内存占用问题及所带来的影响!
- VC用ADO做DLL的问题(附代码)请指导!!! ----急送分
- 关于SQL Server“调试程序接口”的问题
- SQLSERVER2008可以远程访问但本机无法访问
- 在一个表中,如何对临时添加列中的数据进行非重复的列数据求和
- 【重新发帖】求SQL查询语句,关于2个表数据差值的
- reporting service中图表的问题
Qcountsum(sga51,sga91,SID)建上索引语句本身没什么可优化的,在以上列建上索引再试试性能
SUM(sga91) 生产数量 ,
SUM(b.gb92) 厂内不良数量 ,
SUM(b.gb94) 厂外不良数量 ,
CONVERT(DECIMAL(18, 4), SUM(b.gb92) * 1.00 / ( SUM(sga91) * 1.00 )
* 100) 厂内不良率百分比 ,
CONVERT(DECIMAL(18, 4), SUM(b.gb94) * 1.00 / ( SUM(sga91) * 1.00 )
* 100) 厂外不良率百分比 ,
CONVERT(DECIMAL(18, 4), SUM(b.gb92 + b.gb94) * 1.00 / ( SUM(sga91)* 1.00 ) * 100) 总不良率
FROM Qcountsum a
LEFT JOIN ( SELECT gb91 ,
SUM(gb92) gb92 ,
SUM(gb94) gb94
FROM Qcountb
WHERE gb51 BETWEEN '2014-11-01' AND '2014-11-20'
GROUP BY gb91
) b ON a.SID = b.gb91
WHERE a.sga91 > 0
AND a.sga51 BETWEEN '2014-11-01' AND '2014-11-20'
GROUP BY sga51
ORDER BY sga51
看你的语言理解能力也有问题
在数据库里执行一下,再测执行时间
CREATE INDEX IX_Qcountb_gb91_gb51 ON Qcountb(gb91,gb51);
CREATE INDEX IX_Qcountsum_sga51_sga91_SID ON Qcountsum(sga51,sga91,SID);
看你的语言理解能力也有问题
在数据库里执行一下,再测执行时间
CREATE INDEX IX_Qcountb_gb91_gb51 ON Qcountb(gb91,gb51);
CREATE INDEX IX_Qcountsum_sga51_sga91_SID ON Qcountsum(sga51,sga91,SID);
高人,索引果然有用,拜谢.
难道a.SID=b.gb91关联记录的日期会不一样?
下面的查询要在 Qcountb.gb51 和 Qcountsum.sga51 分别建索引。
SELECT a.sga51 日期,
a.sga91 生产数量,
b.gb92 厂内不良数量,
b.gb94 厂外不良数量,
CONVERT(DECIMAL(18,4),b.gb92 * 1.00 / (a.sga91 * 1.00) * 100) 厂内不良率百分比,
CONVERT(DECIMAL(18,4),b.gb94 * 1.00 / (a.sga91 * 1.00) * 100) 厂外不良率百分比,
CONVERT(DECIMAL(18,4),b.gb92 + b.gb94 * 1.00 / (a.sga91 * 1.00) * 100) 总不良率
FROM ( SELECT sga51,
SUM(sga91) sga91
FROM qcountsum
WHERE sga91 > 0
AND sga51 BETWEEN '2014-11-01' AND '2014-11-20'
GROUP BY sga51
) a
LEFT JOIN ( SELECT gb51,
SUM(gb92) gb92,
SUM(gb94) gb94
FROM qcountb
WHERE gb51 BETWEEN '2014-11-01' AND '2014-11-20'
GROUP BY gb51
) b
ON a.sga51 = b.gb51
ORDER BY a.sga51