【问题标题】:select latest duplicate record from table got long process MySQL从表中选择最新的重复记录得到长进程 MySQL
【发布时间】:2019-10-22 21:21:02
【问题描述】:

我有一个查询,只显示一个重复数据并检索具有最新日期的数据。但过程非常漫长。我应该写什么样的查询才能更有效率?

这是我的查询:

SELECT d.id_qr, d.code_qr, d.date, d3.code id_code 
FROM survey d 
INNER JOIN place d3 on d.id_code = d3.id_code 
WHERE d.date IN (SELECT max(d2.date)FROM survey d2 WHERE d2.code_qr=d.code_qr)

【问题讨论】:

    标签: mysql select optimization duplicates


    【解决方案1】:

    您可以尝试ORDER BYLIMIT,而不是聚合。此外,您可能想要一个相等而不是 IN

    SELECT d.id_qr, d.code_qr, d.date, d3.code id_code 
    FROM survey d 
    INNER JOIN place d3 on d.id_code = d3.id_code 
    WHERE d.date = (
        SELECT d2.date 
        FROM survey d2 
        WHERE d2.code_qr = d.code_qr
        ORDER BY d2.date DESC
        LIMIT 1
    )
    

    为提高性能,请考虑在survey(code_qr, date) 上建立索引。

    【讨论】:

    • 从 40 秒到 0.1303 秒 - 非常感谢
    • 很高兴听到这个消息!我没想到会有那么多好处...欢迎@Xerror!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 2021-05-16
    • 1970-01-01
    相关资源
    最近更新 更多