【发布时间】:2020-05-02 21:41:39
【问题描述】:
我有一个超过百万行的表。他们每个人都有一个许可证号。
我现在的查询,根据许可证号进行分组,并按计数(不同(类型))和计数(许可证号)和日期排序。
所有带有连接的字段 - license_no 或 date 都被索引。 但是我需要 5 秒才能返回结果。
如何加快性能。理想情况下,结果不应超过一秒钟。 查询:
SELECT `license_no`,
COUNT(DISTINCT(type)) AS gdid,
COUNT(id) AS cdid,
max(updated_on) as maxdate
FROM `mytable`
WHERE `license_no` >0
GROUP BY `license_no`
ORDER BY `gdid` DESC, `cdid` DESC, maxdate DESC LIMIT 12
我要实现的逻辑:
我有一个汽车清单(百万+记录)。
我想找到所有独特的汽车(由 license_no 唯一) 排序方式:
- license_no 具有最大数量的不同类型
- license_no 具有最大总计数
- 最后按最新日期对单个记录进行排序。
【问题讨论】:
-
请说明您要实现的逻辑。您的查询格式错误,因为您在
ORDER BY中引用了updated_on,但它没有在SELECT中定义,也不是GROUP BY列。 -
@GordonLinoff,我已经更新了查询和我想要获取的数据。
-
请提供
SHOW CREATE TABLE和所需输出的样本。我不明白“license_no 具有最大数量的不同类型”
标签: mysql sql group-by query-optimization