2009-08-08 45 views
0

我正在過濾作爲一組遞歸任務的一部分的子結果的DAO記錄集。我試圖加速例程,並且我可以看到每次實例化類對象時都會打開記錄集。這一步發生數百次。沒有辦法重新使用它嗎?這裏的關鍵字是持久性,不是嗎?在類模塊中持久化DAO記錄集

我試着在Instantiate事件中設置記錄集,或者從函數內部設置記錄集。我試過使用靜態(而不是暗淡或私人)來聲明記錄集。我也弄清楚瞭如何聲明和設置類對象。

我知道一個常見的解決方案是更改爲每個調用的特定SQL源,但生成記錄集的查詢本身很慢,所以我不認爲這有幫助。是的,基表被優化索引。

我很高興發佈代碼,但這足以讓您提供任何提示嗎?

+0

請注意,建立索引Yes/No a Booklean字段也可以提高性能。例如,在包含2000條記錄的作業表上編制「是/否」字段時,在查詢中的性能差異很大,該查詢還包含一個包含800K記錄的表。 – 2009-08-08 19:03:27

+0

我把索引放在哪裏會有sort/filter ....所以如果一個Y/N字段會被排序或過濾,那麼它會得到一個索引。你的意思是說,即使它沒有進入查詢處理,它也有助於索引Y/N嗎?或者你是說,如果Y/N是查詢處理的一部分,就像其他字段一樣需要編制索引? – Smandoli 2009-08-09 03:37:57

回答

2

記錄集本身只需要創建一次,然後過濾很多次?

如果是這樣,你是否可以將記錄集作爲參數傳遞到類方法/函數中對其進行過濾?這樣記錄集可以創建一次。

+0

啊哈!這可能是我需要的。我會給它一個通行證(可以這麼說)。 – Smandoli 2009-08-08 01:18:08

+0

一個星期後:所以讓我對這個答案進行投票並接受它。這很好,因爲我的方法錯誤(這是一個愚蠢的錯誤)是昂貴的,糾正它是一個很大的安慰。 – Smandoli 2009-08-12 16:51:44

+0

太棒了!很高興有幫助。 :) – klabranche 2009-08-12 17:21:44