已经有一段时间没有使用SQL了。
什么是最好的索引:
SELECT x.*
FROM My_Table x
INNER JOIN
(SELECT id, MAX(update_time) AS last_update
FROM My_Table
GROUP BY name) y ON x.name = y.name
AND x.score
AND x.update_time = y.last_update)查询可能不会因为它而生成sense...but。
ALTER TABLE My_Table ADD INDEX my_index(name, surname, update_time) ??或
ALTER TABLE My_Table ADD INDEX my_index(update_time, name, surname) ??此外,还有基于姓名、姓氏的查询
发布于 2020-07-13 23:18:45
首先,将查询写成:
SELECT x.*,
FROM (SELECT x.*, MAX(update_time) OVER (PARTITION BY name, score ORDER BY update_time DESC) as last_update
FROM my_table x
) x
WHERE update_time = last_update;并使用索引(name, score, update_time desc)。
对于相同的查询,您可以使用:
select x.*
from my_table x
where x.update_time = (select max(x2.update_time)
from my_table x2
where x2.name = x.name and x2.score = x.score
);这通常在许多数据库上具有最佳性能(使用正确的索引)。
https://stackoverflow.com/questions/62878877
复制相似问题