select max(id)
from pt_l_program
where starttime<=UNIX_TIMESTAMP()
group by lid order by null
以下是解释结果:
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
|:---|:------------|:-------|:-----|:--------------|:----|:--------|:----|:-----|:------|
| 1 | SIMPLE | program| ALL | StartTime | null| null | null| 99999| Using where; Using temporary|
答案 0 :(得分:1)
你想要一张表上的索引。一个选项是pt_l_program(starttime, lid, id)
。
但是,在外层编写没有group by
的查询可能会更好。让我假设你有一张桌子上有所有&#34; l&#34;值:
select (select max(p.id)
from pt_l_program p
where starttime <= UNIX_TIMESTAMP() and p.l_id = l.l_id
)
from l
此查询也需要上述索引。