orcal 语句求大神帮忙优化一下

qq_15126639 2017-06-05 07:27:30
SELECT E.ITEM_ID,E.ACQUISITIONTIME,E.TIMESTAMP FROM
(SELECT D.DEVICE_ID,D.DEV_SN,B.V_CODE FROM YUN_BASE_DEVICE_DETAILS D,YUN_BASE_COLLECTVARIATE B
WHERE 1=1 AND D.DEVICE_TYPE_ID!=1 AND D.LAST_ONLINE_TIME IS NOT NULL AND D.DEVICE_ID = B.COLLECT_ID)S
INNER JOIN
EMS_DATAACQUISITION E on E.ITEM_ID = CONCAT(S.DEV_SN,S.V_CODE)
INNER JOIN
(SELECT ITEM_ID,MAX(TIMESTAMP) AS TIMESTAMP
FROM EMS_DATAACQUISITION GROUP BY ITEM_ID)ED
ON ED.ITEM_ID = E.ITEM_ID AND ED.TIMESTAMP = E.TIMESTAMP
ORDER BY E.TIMESTAMP DESC
跑完要19S 数据太多了~求大神优化!感激不尽!!
...全文
1059 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cfghfgskrte 2017-07-26
  • 打赏
  • 举报
回复
用with试下: with CONCATTABLE(DEVICE_ID, DEV_SN, CONCATID) as ( select D.DEVICE_ID , D.DEV_SN , CONCAT(S.DEV_SN,S.V_CODE) as CONCATID from YUN_BASE_DEVICE_DETAILS D , YUN_BASE_COLLECTVARIATE B where 1 = 1 and D.DEVICE_TYPE_ID != 1 and D.LAST_ONLINE_TIME is not null and D.DEVICE_ID = B.COLLECT_ID ) select E.ITEM_ID , E.ACQUISITIONTIME , E.TIMESTAMP from EMS_DATAACQUISITION E inner join CONCATTABLE S on(E.ITEM_ID = S.CONCATID) inner join ( select ITEM_ID , max(TIMESTAMP) as TIMESTAMP from EMS_DATAACQUISITION group by ITEM_ID ) ED on (ED.ITEM_ID = E.ITEM_ID and ED.TIMESTAMP = E.TIMESTAMP) order by E.TIMESTAMP desc
sevancheng 2017-06-06
  • 打赏
  • 举报
回复
(SELECT ITEM_ID,MAX(TIMESTAMP) AS TIMESTAMP FROM EMS_DATAACQUISITION GROUP BY ITEM_ID)ED 这个往前面放试试

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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