首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELECT FROM table t JOIN SQL索引

SELECT FROM table t JOIN SQL索引
EN

Stack Overflow用户
提问于 2020-07-13 23:15:43
回答 1查看 28关注 0票数 0

已经有一段时间没有使用SQL了。

什么是最好的索引:

代码语言:javascript
复制
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。

代码语言:javascript
复制
ALTER TABLE My_Table ADD INDEX my_index(name, surname, update_time) ??

代码语言:javascript
复制
ALTER TABLE My_Table ADD INDEX my_index(update_time, name, surname) ??

此外,还有基于姓名、姓氏的查询

EN

回答 1

Stack Overflow用户

发布于 2020-07-13 23:18:45

首先,将查询写成:

代码语言:javascript
复制
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)

对于相同的查询,您可以使用:

代码语言:javascript
复制
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
                      );

这通常在许多数据库上具有最佳性能(使用正确的索引)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62878877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档