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 DATABASE就在这里。
我想输出这些。
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'
答案 0 :(得分:0)
如果索引位于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
更高值的所有行。"这是一种更复杂的说法:"为每个idx
获取最多unique_odd
的行。"但是这个版本可以利用上面的索引,这可以提高性能。
您可能还需要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);