對於腳本來說查詢太慢我已經使用查詢產生器編寫了多個查詢的腳本。 然後我將這些腳本背對背放置。 接下來,我想使用由查詢形成的新資料表。
我的問題是其中一個查詢需要超過 10 秒才能運行,並且查詢後面的 JSL 嘗試使用“待形成”表(當腳本到達該部分代碼時該表不存在) 。 這顯然會導致錯誤並退出腳本。
我嘗試使用“運行後台”命令,但這似乎只是一起結束腳本。
有什麼想法可以運行查詢並強制等待,直到所有查詢都返回其表,然後再運行腳本的其餘部分(作用於這些表)?
謝謝你,
馬丁
回覆:查詢對於腳本來說太慢抱歉,我遲到了 - 布萊恩的使用建議運作前台JSL 中的查詢是確保查詢在 JSL 的下一行執行之前完成的方法。 不需要重寫!
艾瑞克
回覆:查詢對於腳本來說太慢實際上,更好的是使用 Run Foreground。很抱歉沒有立即得到正確的結果,但類似:
查詢1 = 新的 SQL 查詢(
聯繫(...
) ,
訂購依據( ) ,
後查詢腳本(...
)
) ;
查詢1 <<運行前台;
應該管用。
布萊恩
回覆:查詢對於腳本來說太慢嗨馬丁,
您也可以嘗試關閉查詢的背景操作。這對我有用。您可以前往「首選項->查詢產生器->ODBC->盡可能在背景執行查詢」並取消選取該選項,或在腳本中您可以執行下列操作:
查詢產生器設定(後台查詢(0))
在腳本的頂部。
布萊恩·科科倫
JMP開發
回覆:查詢對於腳本來說太慢非常感謝你,pmroz!!!! 這需要一些重寫,但效果很好!
回覆:查詢對於腳本來說太慢我會嘗試一下,然後讓你知道結果如何。
謝謝
回覆:查詢對於腳本來說太慢我懷疑查詢 << 運行立即返回。 我不確定你如何同步它。
我用執行SQL相反,這似乎要等到完成後才能推進腳本。 例如,如果您有 4 個 SQL 語句要執行:
dbc = create database connection(<CONNECTION-STRING>);
dt1 = execute sql(dbc, sql1);
dt2 = execute sql(dbc, sql2);
dt3 = execute sql(dbc, sql3);
dt4 = execute sql(dbc, sql4);
close database connection(dbc);</CONNECTION-STRING>
回覆:查詢對於腳本來說太慢是的。 Wait(0) 其實沒有照你的建議去做。 查詢實際上根據(看起來的)其大小和複雜性以隨機順序返回。 我有 7 個查詢,這是第 4 個查詢,需要很長時間。 我嘗試將該查詢放在腳本的第一個位置,但其他查詢運行得太快,以至於當腳本中的其餘程式碼執行時,這個查詢仍然沒有完成。
這是我正在使用的程式碼的一部分,其中大部分被刪除以保護原始程式碼。 但是,它給了一般結構。 為了簡潔起見,我刪除了查詢 4-7 和最後 4 個 Join 語句。
查詢1 = 新的 SQL 查詢(
聯繫(...
) ,
訂購依據( ) ,
後查詢腳本(...
)
) ;
查詢1 <<跑步;
等待( 0 ) ;
查詢2 = 新的 SQL 查詢(
聯繫(...
) ,
訂購依據( ) ,
後查詢腳本(...
)
) ;
查詢2 <<跑步;
等待( 0 ) ;
Query3 = 新的 SQL 查詢(
聯繫(...
) ,
訂購依據( ) ,
後查詢腳本(...
)
) ;
查詢3 <<跑步;
等待( 0 ) ;
//連接表
表 12 = 數據表( “01” ) <<加入(
和(數據表( “02” ) ) ,
合併同名列,
比賽旗幟( 0 ) ,
透過匹配列(
:
) ,
丟棄倍數( 0 , 0 ) ,
包括不匹配項( 0 , 0 ) ,
保留主表順序( 1 ) ,
輸出表( “12” )
) ;
表 123 = 數據表( “12” ) <<加入(
和(數據表( “03” ) ) ,
合併同名列,
比賽旗幟( 0 ) ,
透過匹配列(
:
) ,
丟棄倍數( 0 , 0 ) ,
包括不匹配項( 0 , 0 ) ,
保留主表順序( 1 ) ,
輸出表( “123” )
) ;
回覆:查詢對於腳本來說太慢你有沒有等待(0);每次檢索後指令? 這應該會強制 JMP 等待先前命令的完成。