2011-10-08 65 views
0

我必须做一个UPDATE表,它包含一个SELECT COUNT,但是这会花费太长时间。 这是我原来的查询select count(*)multiple rows and display result

UPDATE list SET count = 
(SELECT COUNT(*) FROM set_1 WHERE set_1.start BETWEEN list.start AND list.end); 

我只是100行更新,所以我想的只是做一个选择计数并在屏幕上显示出来。然后我会将结果复制/粘贴到我的Excel电子表格中。

我的目的是要做到这一点,但它返回只有一个号码(而不是100行数)

SELECT COUNT(*) FROM set_1,list WHERE set_1.start BETWEEN list.start AND list.end; 

但是,这并不工作,它返回所有SELECT COUNT的一个大数目在一起。

任何人都可以帮我解决这个问题吗?

+0

你的意思是你要编辑只有100行之间的笛卡尔积? –

回答

0

你正在做的设置1和表

select   
    (SELECT COUNT(*) FROM set_1 
     WHERE set_1.start BETWEEN list.start AND list.end) as [count] 
from list 
+0

true ..我只是试过,但我认为这会更快。如果我在一行上只做一个选择计数(*),则需要0.02秒。如果我查询10行,则需要1分钟6.07秒。所以100行它成倍增长。我不明白为什么时间成倍增加.. – madkitty

+0

在set_1表上添加一个set_1.start列的索引,看看会发生什么 –

+0

可能select count(1)会更快,我不熟悉mysql –