SQL查询加速

时间:2013-01-16 19:11:18

标签: mysql performance

我正在尝试从表中选择N个最后一个唯一关键字,它具有以下结构:

id | keyword  | digit
1  | TEXT1    | 123
2  | TEXT2    | 125
...
3  | TEXT3    | 123

查询:

SELECT id, keyword FROM table 
WHERE digit = 123 
AND id IN 
(SELECT MAX(id) FROM table GROUP by keyword)
ORDER BY id DESC LIMIT 10

当限制为10 - 20时,它需要不到一秒,但如果限制从50开始 - 查询时间从3秒开始。

子选择是邪恶的。我是否可以加快这样的查询?

2 个答案:

答案 0 :(得分:3)

试试这个

    SELECT MAX(id) max, keyword FROM table 
    WHERE digit = 123 
    GROUP BY keyword
    ORDER BY max DESC LIMIT 10

答案 1 :(得分:1)

试试这个

SELECT MAX(id) as id, keyword FROM table
    WHERE digit = 123
    GROUP BY keyword 
    ORDER BY id DESC LIMIT 10

问候。