gpt4 book ai didi

mysql - FASTest > mysql 获取最后的不同记录返回所有列

转载 作者:行者123 更新时间:2023-11-30 22:55:12 24 4
gpt4 key购买 nike

idx info    market  po  side    odd     unique_odd
10 927606 OU_OT 2.5 under 2.01 927606_OU_2.5_under
11 927606 OU_OT 2.5 under 2.02 927606_OU_2.5_under
12 927606 OU_OT 2.5 over 1.81 927606_OU_2.5_over
13 927776 OU_OT 3.5 under 1.67 927776_OU_3.5_under
14 927776 OU_OT 3.5 over 2.11 927776_OU_3.5_over
15 927776 OU_OT 3.5 over 2.31 927776_OU_3.5_over

odds_etc 数据库在这里。

我想这样输出。

11  927606  OU_OT   2.5 under   2.02    927606_OU_2.5_under
12 927606 OU_OT 2.5 over 1.81 927606_OU_2.5_over
13 927776 OU_OT 3.5 under 1.67 927776_OU_3.5_under
15 927776 OU_OT 3.5 over 2.31 927776_OU_3.5_over

这意味着 unique_odd 和 MAX(idx) 不同它可以低于 sql,但需要 7 秒。太长了,我要1~2秒。

SELECT T1.* FROM odds_etc T1
INNER JOIN (SELECT unique_odd,MAX(idx) as maxidx FROM odds_etc GROUP BY unique_odd) groupT2
ON T1.unique_odd = groupT2.unique_odd AND T1.idx = groupT2.maxidx
WHERE info='$info'

最佳答案

使用 odds_etc(unique_odd, idx) 上的索引,以下查询可能具有更好的性能:

select oe.*
from odds_etc oe
where info = '$info' and
not exists (select 1
from odds_etc oe2
where oe2.unique_odd = oe.unique_odd and
oe2.idx > oe.idx
);

这将查询表述为:“获取 unique_odd 没有更大值 idx 的所有行。”这是一种更复杂的说法:“为每个 unique_odd 获取具有最大 idx 的行。”但是这个版本可以利用上面的索引,这应该会提高性能。

您可能还需要 odds_etc(info, unique_odd, idx) 上的索引。

编辑:

为了性能,你需要以下两个指标:

create index idx_odds_etc_unique_odd_idx on odds_etc(unique_odd, idx);
create index idx_odds_etc_info_unique_odd_idx on odds_etc(info, unique_odd, idx);

关于mysql - FASTest > mysql 获取最后的不同记录返回所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26716702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com