下面的查询是采取很长的执行:优化MySQL查询
SELECT HISTORY.VERSION_ID
, HISTORY.ACTION
, HISTORY.STATUS
, HISTORY.APP_INSTANCE
, HISTORY.ACTION_TIMESTAMP
FROM
HISTORY
WHERE
HISTORY.HISTORY_ID IN (SELECT max(H.HISTORY_ID) AS expr1 FROM HISTORY H GROUP BY H.VERSION_ID)
GROUP BY
HISTORY.VERSION_ID
, HISTORY.ACTION
, HISTORY.STATUS
, HISTORY.APP_INSTANCE
, HISTORY.ACTION_TIMESTAMP
表相关的其他重要的事情是:
表:
Field Type Null Key Default Extra
HISTORY_ID bigint(20) NO PRI (null) auto_increment
VERSION_ID bigint(20) YES MUL (null)
ACTION varchar(50) YES (null)
STATUS varchar(100) YES (null)
ACTION_TIMESTAMP timestamp NO CURRENT_TIMESTAMP
APP_INSTANCE varchar(50) YES (null)
TIME_TO_COMPLETE_PROCESS bigint(35) YES (null)
指标:
HISTORY 0 PRIMARY 1 HISTORY_ID A 89 (null) (null) BTREE
HISTORY 1 FK_HISTORY 1 VERSION_ID A 44 (null) (null) YES BTREE
说明在查询中:
1 PRIMARY HISTORY ALL (null) (null) (null) (null) 472468 Using where; Using temporary; Using filesort
2 DEPENDENT SUBQUERY H index (null) FK_HISTORY 9 (null) 6 Using index
请帮我优化查询。
感谢, 萨钦
你可以发布查询的结果......我相信它只会返回一条记录。虽然不清楚,但我怀疑如此。请发布结果以清除疑问,以便我可以进一步帮助您 – 2011-04-26 09:36:37
不,该查询不返回仅一条记录。它正在返回约5万条记录。让我知道你是否想查看一些结果。 – Sachin 2011-04-26 10:06:42