【发布时间】:2013-08-01 14:19:34
【问题描述】:
好的,很可能我做错了什么,但是按照这里用户的建议,我运行了这个查询:
SELECT id, item,
(SELECT COUNT(item) FROM Table1 WHERE id=a.id AND item=a.item) cnt
FROM (SELECT DISTINCT a.id,b.item FROM Table1 a, Table1 b) a
ORDER BY id, item;
在这张桌子上:
ID ITEM
-----------------
0001 345
0001 345
0001 120
0002 567
0002 034
0002 567
0003 567
0004 533
0004 008
...
为了得到这个结果:
ID ITEM CNT
1 8 0
1 34 0
1 120 1
1 345 2
1 533 0
1 567 0
2 8 0
2 34 1
...
但它花费的时间太长,一天后查询仍在运行...... 有没有办法提高性能?我有大约 400 万行
谢谢
【问题讨论】:
-
你添加了索引和键吗?
-
您在 FROM 子句中运行的查询正在敲击数据库!您正在加入没有 where 条件的表,所以它本质上是对每条记录进行交叉连接,当有 400 万条记录时,这将需要很长时间!
-
对不起,我是 mysql 新手,所以我不确定这是什么 - 所以答案是否定的......你能解释一下你的意思吗?
-
您告诉数据库检查 400 万行和 400 万行。这意味着它必须进行 (4,000,000 * 4,000,000) = 16,000,000,000,000 次计算。不包括您进行的其他计算。
-
请停止使用 MYSQL,直到您将学习基础知识....