帮助优化SQL查询

时间:2010-12-14 11:34:36

标签: mysql query-optimization

我注意到我的MySQL服务器上出现了一些性能问题。慢查询日志显示导致问题的四个查询,运行每个查询大约需要10秒。我想知道是否有更有效的方法来运行查询。

我选择的表格大约有13,000行,结构如下:

id  p   year    time            b      o           type
1   dec 10  2010-12-02 12:34:27 1000    1000        cape
2   jan 10  2010-12-02 12:34:27 1000    1000        cape
3   feb 10  2010-12-02 12:34:27 1000    1000        cape
4   q1  10  2010-12-02 12:34:27 1000    1000        cape
5   q2  10  2010-12-02 12:34:27 1000    1000        cape
6   q3  10  2010-12-02 12:34:27 1000    1000        cape
7   q4  10  2010-12-02 12:34:27 1000    1000        cape
8   11  10  2010-12-02 12:34:27 1000    1000        cape
9   12  10  2010-12-02 12:34:27 1000    1000        cape
10  dec 10  2010-12-02 12:34:27 1000    1000        pmx
11  jan 10  2010-12-02 12:34:27 1000    1000        pmx
12  feb 10  2010-12-02 12:34:27 1000    1000        pmx
13  q1  10  2010-12-02 12:34:27 1000    1000        pmx
14  q2  10  2010-12-02 12:34:27 1000    1000        pmx
15  q3  10  2010-12-02 12:34:27 1000    1000        pmx
16  q4  10  2010-12-02 12:34:27 1000    1000        pmx

我运行四个查询 - 每种类型一个,它们按时间选择每个p和顺序。该数据通过四个表格显示在网站的前端。

慢的查询是:

SELECT type,id,p,time,b,o
FROM zz
WHERE id = (SELECT MAX(id) FROM zz AS f
            WHERE f.p = zz.p
            AND type = 'pmx')
AND TYPE = 'pmx';

(其他三种类型相同)

有没有人有改进实际查询的提示?

由于

1 个答案:

答案 0 :(得分:0)

这样的东西
SELECT  zz.type,
        zz.id,
        zz.p,
        zz.time,
        zz.b,
        zz.o
FROM    zz INNER JOIN
        (
            SELECT  type,
                    MAX(id) MaxID
            FROM    zz
            WHERE   type IN ('1','2','3','4')
            GROUP BY type
        ) m ON  zz.type = m.type
            AND zz.ID = m.MaxID

其中('1','2','3','4')是有问题的四种类型。