我注意到我的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';
(其他三种类型相同)
有没有人有改进实际查询的提示?
由于
答案 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')
是有问题的四种类型。