【问题标题】:How to make this query more efficient?如何让这个查询更有效率?
【发布时间】:2013-10-07 03:17:40
【问题描述】:

my previous question 的评论说“我建议也在这里查看答案:stackoverflow.com/questions/1313120/…。您接受的答案在技术上认为是正确的,但实际上可能效率很低,因为 MySQL 不喜欢相关子查询” .

我接受的答案的 SQl 是at SQL fiddle。引用的问题比较了 LEFT JOIN 和 INNER JOIN。 SQL Fddle 仅使用 JOIN

那么,如何重写查询以使用 LFT JOIN?

【问题讨论】:

  • 在join前面加“LEFT”(巧合的是,在左边);)

标签: mysql


【解决方案1】:

我不确定 mysql 的性能,但您可以 LEFT JOIN 用于可能取消您的位置的行,然后使用 WHERE 仅选择 LEFT JOIN 不匹配的记录。

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 中:http://sqlfiddle.com/#!2/2e994/31/0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 2015-01-24
    • 2018-11-07
    相关资源
    最近更新 更多