none
請問有沒有人試過 DataAdapter.Fill 方法的效能? RRS feed

  • 問題

  • 在做大量資料分頁的時候,大部分的人都用 T-SQL 或 Stored Procedure 等方法來做,但不知道有沒有人試過用 DataAdapter.Fill 方法 (DataTable[], IDataReader, Int32, Int32) 這個方法來做過分頁?
     
    DbDataAdapter.Fill 方法 (DataSet, Int32, Int32, String)
    http://msdn2.microsoft.com/zh-tw/library/kxs7kbfe(VS.80).aspx
     
    因為我自己有實驗了一下做大量的資料分頁查詢,覺得效能很不錯,但我並沒有很仔細的去測試到底跟用 T-SQL 或 Stored Procedure 的效能差多少。
     
    我覺得奇怪的是,為什麼網路上很少人提到用這種方法做分頁?是否有人可以提供一些看法?
    2008年1月18日 上午 11:26

解答

  • 你可能線上手冊沒看仔細。這樣會將所有結果傳回,然後只填入範圍內的資料,如果透過網路,流量不會省下來,自然速度也快不起來。

     

    線上手冊也有介紹如何最佳化分頁查詢。

     

    先前這篇討論有引用到那篇,不是 ROW_NUMBER 只限於 SQL Server 的特殊解,而是適用於支援 TOP 語法的所有資料庫:

    http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=1799401&SiteID=14

     

    最佳化查詢後,只傳回分頁結果,效能就會快起來。

     

    2008年1月18日 下午 02:36

所有回覆

  • 注意事項

    DataSet 將不會包含超過 maxRecords 所指定的資料錄數目。不過,查詢所產生的整個結果集仍然會從伺服器傳回

     

    因此用T-SQL 或 Stored Procedure 等方法就是為了不必將所有資料一次取出,而是等待有需要再取

     

     

    2008年1月18日 下午 12:36
  • 你可能線上手冊沒看仔細。這樣會將所有結果傳回,然後只填入範圍內的資料,如果透過網路,流量不會省下來,自然速度也快不起來。

     

    線上手冊也有介紹如何最佳化分頁查詢。

     

    先前這篇討論有引用到那篇,不是 ROW_NUMBER 只限於 SQL Server 的特殊解,而是適用於支援 TOP 語法的所有資料庫:

    http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=1799401&SiteID=14

     

    最佳化查詢後,只傳回分頁結果,效能就會快起來。

     

    2008年1月18日 下午 02:36