MySQL:如何优化这个SQL?

时间:2014-12-09 16:56:10

标签: mysql

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|

1 个答案:

答案 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

此查询也需要上述索引。