【发布时间】:2011-11-11 22:34:41
【问题描述】:
我必须计算 table2 中的数字在 table2.a 和 table2.b 范围内的数字之间出现了多少次
即我们想知道我们有多少次:a
我运行了以下查询:
UPDATE table2
SET occurrence =
(SELECT COUNT(*) FROM table1 WHERE start BETWEEN table2.a AND table2.b);
table2
ID a b occurrence
1 1 10
2 1 20
3 1 25
4 2 30
table1
ID start col1 col2 col3
1 1
2 7
3 10
4 21
5 25
6 27
7 30
table2 为
- a、b 和出现的 3 个索引
- 1567 行(因此我们将在 table2 上 SELECT COUNT(*) 1567 次......)
- ID 列作为 PK
table1 为
- 开始时有 1 个索引
- 42,000,000 行
- 列开始是“按列开始排序”
- ID 列作为 PK
==> 2/3 花了 2.5 小时。我需要加快速度...有什么建议吗? :)
【问题讨论】:
-
你在查询上试过
EXPLAIN EXTENDED吗? -
是的,但它并没有告诉我太多..
标签: mysql performance select count indexing