2012-06-22 29 views
0

我正在尋找遍歷一個USERS表,併爲每個用戶選擇基於我的where子句,在LOOP內執行一堆mysql查詢,包括臨時表創建,使用準備語句,等通過MYSQL表循環的最佳性能方法

應該這樣做,在性能方面最好的方法是什麼。使用while,for each,for,repeat?

例如。(僞碼)

foreach user_name in (select user_name from users where user_type = 'SP' and active = 'Y') 
do 
    set @l_query1 = concat("create temp_table_t1 select * from ...") 
    PREPARE .. 
    EXECUTE ... 

    set @l_query2 = ... 
    .... 
    .... etc .. 
done 

好,我有一個表的用戶,其中PK = USER_NAME。

所以,這個查詢將會很快執行,我只需要LOOP通過這個resultSet,然後在LOOP中執行其餘的mySQL查詢。 我怎樣才能通過一個簡單的選擇結果集循環?

感謝

+0

您所描述的是對數據集的RBAR操作。無論你使用什麼,這可能會很慢。如果您可以向我們展示我們可能能夠以基於SETS的方式解決它的數據結構和查詢。 – Namphibian

+0

你可以在一個帶有連接的查詢中完成所有這些工作,這當然會減少執行時間 –

回答

0

之間在性能上沒有什麼區別,而的for-each重複

如果你正在尋找的性能提升,可以考慮在這裏你可能會降低代碼在數據庫上執行的查詢數。例如,對所有用戶運行一次查詢將非常有幫助,而不是爲每個用戶運行一次