Mssql 性能优化问题

leon460 2013-11-07 02:16:39
查询的时候结果一直出不来哦,能帮我找下原因么?
谢谢 了
SELECT P.NAME,WH.WORKORDER,(CASE substring(T.NAME,1,1) WHEN 'L' THEN 'LPE' WHEN 'A' THEN 'ASM' ELSE P.LINE END) as Line
,P.WAFERSIZE,WH.LOTID,WH.RUNNO
,COUNT(DISTINCT WH.WAFERID) AS MoveInQty
,SUM(CASE WHEN LEN(WH.DEFECTCODE)=0 THEN 0 ELSE 1 END) AS ScrapQty
,ROUND((COUNT(DISTINCT WH.WAFERID) * ((CAST(P.WAFERSIZE AS FLOAT) * CAST(P.WAFERSIZE AS FLOAT)) / 36)),2) AS TranslateQty
,S.NAME,T.NAME,WH.OPERATORID
,WH.MOVEINTIME,WH.MOVEOUTTIME

FROM WAFERHISTORY WH,Shopfloornode S,TOOL T,WORKORDER WO,PRODUCT P
WHERE WH.STEPID=S.SHOPFLOORNODEID AND WH.TOOLID=T.ID
AND WH.WORKORDER=WO.WorkOrderID
--AND WO.WorkOrderType IN (3,7,11)
AND WO.ProductName=P.NAME
AND T.TOOLCLASS='M'
AND S.NAME = '6320'
AND WH.MOVEOUTTIME > '2013-10-07 00:00:00'
AND WH.MOVEOUTTIME < '2013-10-10 00:00:00'
GROUP BY S.NAME,WH.WORKORDER,WH.LOTID,T.NAME,P.WAFERSIZE, P.NAME,WH.RUNNO,p.Line,WH.OPERATORID,WH.MOVEINTIME,WH.MOVEOUTTIME;


以下是计划花费的图形


...全文
300 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2013-11-09
  • 打赏
  • 举报
回复
引用 10 楼 leon460 的回复:
[quote=引用 9 楼 DBA_Huangzj 的回复:] 1、drop index idx_wh_moveintime on waferhistory 2、create nonclustered index idx_wh_moveintime on WAFERHISTORY(Morveouttime,RUNNO, DEFECTCODE ,OPERATORID ) 再贴执行计划出来看看,另外你那个表上索引建的很不合理
我的那个表蛮大的,不知道做以下两个动作时,会有什么影响,这个数据库用在生产的,不能当机或者重启的 [/quote] 应该影响不是很大,你不要在业务高峰时,进行操作,在业务不忙的时候进行操作。 我之前在公司的服务器上,一个1.5亿条数据的表,建索引,也就20分钟,就建好了。
發糞塗牆 2013-11-09
  • 打赏
  • 举报
回复
那就先创建我那个,重建时索引重命名,然后把原来那个删掉
leon460 2013-11-09
  • 打赏
  • 举报
回复
引用 9 楼 DBA_Huangzj 的回复:
1、drop index idx_wh_moveintime on waferhistory
2、create nonclustered index idx_wh_moveintime on WAFERHISTORY(Morveouttime,RUNNO, DEFECTCODE ,OPERATORID
)
再贴执行计划出来看看,另外你那个表上索引建的很不合理


我的那个表蛮大的,不知道做以下两个动作时,会有什么影响,这个数据库用在生产的,不能当机或者重启的
發糞塗牆 2013-11-08
  • 打赏
  • 举报
回复
RID查找是没有索引覆盖的原因,把IDX_WH那个索引定义给出来
發糞塗牆 2013-11-08
  • 打赏
  • 举报
回复
1、drop index idx_wh_moveintime on waferhistory 2、create nonclustered index idx_wh_moveintime on WAFERHISTORY(Morveouttime,RUNNO, DEFECTCODE ,OPERATORID ) 再贴执行计划出来看看,另外你那个表上索引建的很不合理
leon460 2013-11-08
  • 打赏
  • 举报
回复
引用 7 楼 DBA_Huangzj 的回复:
RID查找是没有索引覆盖的原因,把IDX_WH那个索引定义给出来


LongRui888 2013-11-07
  • 打赏
  • 举报
回复
从你的执行计划来看,这个表WAFERHISTORY应该已经建立了索引了,而且确实用的是索引查找。 主要是在你的查询中用到了WAFERHISTORY差不到10个字段,所以不太适合建立覆盖索引。 你尝试运行如下的命令,再运行,看能不能快一点: update statistics WAFERHISTORY update statistics Shopfloornode update statistics TOOL update statistics WORKORDER update statistics PRODUCT
發糞塗牆 2013-11-07
  • 打赏
  • 举报
回复
人呢?
Q315054403 2013-11-07
  • 打赏
  • 举报
回复
RID Head 估计是SQL Server 2000,改造下结构喽,及加个连接提示
發糞塗牆 2013-11-07
  • 打赏
  • 举报
回复
你把图中最右边的那个idx_wh。。。的索引定义贴上来,看不清楚全名
leon460 2013-11-07
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
WH没有索引在上面,RID证明你的表上没有聚集索引,可以把wh这列加到idx_wh的定义里面
能具体点么?我是数据库小白
發糞塗牆 2013-11-07
  • 打赏
  • 举报
回复
WH没有索引在上面,RID证明你的表上没有聚集索引,可以把wh这列加到idx_wh的定义里面

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧