我试图在这里优化我的查询,但不知何故仍需要30多秒才能执行。使用内部连接优化MySQL查询
这是它的外观:
SELECT v.cd, COUNT(vc.id) as count
FROM vc
INNER JOIN v ON v.uid = vc.vid
WHERE ct > 1393279200 AND pid="12" AND sid="10"
GROUP BY vc.vid;
我试图与JOIN多种组合,但现在看来它不是使用JOIN在所有一个好主意。也许最好是建立一个子查询?
期望的结果:
+--------------+--------------+
| cd | count |
+--------------+--------------+
| AE | 1 |
| AM | 1 |
| AU | 230 |
| BB | 1 |
| CA | 127 |
| CH | 1 |
| PR | 3 |
| SA | 1 |
| SE | 5 |
| SG | 12 |
| TH | 1 |
| US | 5829 |
| ZA | 3 |
+--------------+--------------+
36行中组(41.09秒)
通过产生期望的结果:
SELECT V.cd, COUNT(VC.id) as count
FROM vc as VC, v V
WHERE ct > 1393279200 AND pid="12" AND sid="10" AND VC.vid = V.uid
GROUP BY V.cd;
你有一个'v.uid = vc.vid' –
的索引你为什么按'vc.vid'分组,但选择'v.cd'?给我们表格结构,样本数据和期望的结果 –
看起来像索引问题。连接通常比子查询更高效......你可以分享你的模式吗? – bpaul