2011-10-08 63 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 –