3 回答

TA貢獻1836條經驗 獲得超4個贊
Your program starts
Connect to database
do some SQL (selects/inserts/whatever)
do some more SQL (selects/inserts/whatever)
do some more SQL (selects/inserts/whatever)
...
Disconnect from database
Your program ends
也就是說,在程序期間只要需要就保持連接打開。(即使你沒有明確斷開連接,程序的終止也會終止。在做網站時要注意這一點很重要——每個“頁面”本質上都是一個單獨的“程序”;無法保持數據庫連接頁之間。)
你還有另一個隱含的問題......“我應該一次抓取一批行,然后在客戶端處理它們嗎?” 答案是“視情況而定”。
如果可以在 SQL 中完成處理,那么在 SQL 中進行處理可能會更有效率。示例:總結一些數字。
如果您從一個表中獲取一些行,然后對于這些行中的每一行,從另一個表中獲取行...使用 SQL 會更有效率JOIN。
“批處理”可能不相關??蛻舳私缑娲蟾攀?/p>
Fetch rows from a table (possibly all rows, even if millions)
Look at each row in turn.
請提供您將對百萬行執行的具體操作,以便我們進行更具體的討論。
輪詢循環:
如果您每分鐘只檢查一次要執行的新任務,請務必每次都重新連接。
鑒于此,掛在池之間的結果集上沒有意義。

TA貢獻1777條經驗 獲得超3個贊
是的,第二種方法是正確的做法。以下是一些原因:
多次運行查詢會產生開銷。
您正在使用的表中的基礎數據可能會發生變化,并且單獨的批次可能會不一致。
您取決于結果的順序,并且排序可能有重復。
添加回答
舉報