Mysql 如何使此查询更高效?

Mysql 如何使此查询更高效?,mysql,Mysql,一条评论说:“我建议您也看看这里的答案:。您接受的答案在技术上是正确的,实际上可能会非常低效,因为MySQL不喜欢相关的子查询。” 我接受的答案的SQl是。引用的问题比较了左连接和内连接。sqlfddle只使用JOIN

一条评论说:“我建议您也看看这里的答案:。您接受的答案在技术上是正确的,实际上可能会非常低效,因为MySQL不喜欢相关的子查询。”

我接受的答案的SQl是。引用的问题比较了左连接和内连接。sqlfddle只使用JOIN<,我理解它默认为内部连接


那么,如何重写查询以使用LFT联接呢

我不确定mysql的性能,但您可以对不符合您的位置的行使用左连接,然后使用WHERE仅选择左连接不匹配的记录

SELECT v.id
     , v.description
     , v.type
     , p.time_stamp
     , p.latitude
     , p.longitude
  FROM positions p
  JOIN vehicles v ON v.id = p.id
  LEFT JOIN positions l ON l.id = p.id 
                        AND l.time_stamp > p.time_stamp
  WHERE l.id IS NULL
或者,在SQLFiddle中:

在join前面添加“LEFT”(恰好在左侧);)