我有以下查詢,它需要很長時間才能運行,我想知道是否有更高效的編碼方式。我有兩個表DEVICE_LASTUPDATE和DEVICE_EVENTS。有沒有更有效的方法來編碼這個MySQL Query?
DEVICE_LASTUPDATE表中有大約14條記錄,看起來像這樣:
DEVICE_ID LAST_UPDATE
device1 2014-06-01 08:25:23
device2 2014-06-01 09:01:45
device3 2014-06-01 07:43:06
device4 2014-06-01 11:13:14
...etc
DEVICE_EVENTS表有超過一百萬條記錄,看起來像這樣:
DEVICE_ID CREATED_DATE EVENT_CODE
device1 2014-06-01 08:25:23 1011
device1 2014-06-01 09:01:45 2025
device3 2014-06-01 07:43:06 1015
device2 2014-06-01 15:13:09 2115
device1 2014-06-01 11:20:19 1551
...etc
我想是在DEVICE_LASTUPDATE每DEVICE_ID找到DEVICE_LASTUPDATE.LAST_UPDATE = DEVICE_EVENTS.CREATED_DATE並返回這些DEVICE_ID的EVENT_CODE
以下SQL是我ru nning和它的作品,但它是緩慢的(平均5.5秒):
SELECT * FROM (SELECT * FROM DEVICE_LASTUPDATE) AS lastupdate
JOIN DEVICE_EVENTS
WHERE DEVICE_EVENTS.CREATED_DATE = lastupdate.LAST_UPDATE
AND DEVICE_EVENTS.DEVICE_ID = lastupdate.DEVICE_ID
」全部選擇全選「...是的,這可能相當低效。 –
我錯過了什麼'SELECT * FROM DEVICE_LASTUPDATE as lastupdate' ...什麼是額外的'SELECT'? – War10ck