【发布时间】:2015-03-04 02:40:39
【问题描述】:
我有以下 mySql 语句,我确信它可以提高效率,我只是不确定什么是最好的方法......唯一的区别是在 WHERE 子句中更改的equip_id......
==============
(SELECT
`receipt_ts`,
`driver_id`,
`equip_id`,
`pos_lon`,
`pos_lat`,
`pos_timestamp`
FROM `log_messaging`
WHERE `equip_id`='207' AND `tran_type`='T.2.12.0'
ORDER BY receipt_ts DESC LIMIT 1 )
UNION
(SELECT
`receipt_ts`,
`driver_id`,
`equip_id`,
`pos_lon`,
`pos_lat`,
`pos_timestamp`
FROM `log_messaging`
WHERE `equip_id`='212' AND `tran_type`='T.2.12.0'
ORDER BY receipt_ts DESC LIMIT 1 )
UNION
(SELECT
`receipt_ts`,
`driver_id`,
`equip_id`,
`pos_lon`,
`pos_lat`,
`pos_timestamp`
FROM `log_messaging`
WHERE `equip_id`='213' AND `tran_type`='T.2.12.0'
ORDER BY receipt_ts DESC LIMIT 1 );
=================
我正在合并每个返回的行来为多个equip_id 构建一个max(receipt_ts) 的数据集。 (我需要获取设备的最新定位。
有时查询最终会针对 100 多个唯一的equip_id。
我正在尝试使查询比当前执行得更快(如上所述,~100 个 UNION 大约需要 7 秒...
指出正确的方向??
谢谢!
【问题讨论】: