簡體   English   中英

管理表中記錄的最佳方法

[英]The best way to manage records in a table

對不起,他們問了這個問題很多次,但我仍然沒有找到最佳答案。

我擔心應用程序需要很長時間才能下載記錄過濾記錄 假設我有一個名為tbl_customer的表。 並在tbl_customer中記錄了10,000多行

第一個問題 ,我正在使用數據網格視圖顯示記錄 如果我將多達10,000行的所有記錄下載到數據網格視圖中,將是理想的選擇嗎? 還是我最好將記錄行數限制為?

第二個問題 ,什么是在tbl_customer中 過濾記錄的最佳方法 我們是否只需要使用SQL查詢? 使用LINQ? 還是有更好的方法?

現在,我僅使用這種方式:

DataTable dtCustomer = new DataTable();

 using (SqlConnection conn = new SqlConnection(cs.connString))
        {
            string query = "SELECT customerName,customerAddress FROM tbl_customer WHERE customerAddress = '"+addressValue+"' ORDER BY customerName ASC;";

            using (SqlDataAdapter adap = new SqlDataAdapter(query, conn))
            {
                adap.Fill(dtCustomer);

            }
        }

dgvListCustomer.DataSource = dtCustomer

然后我了解了LINQ,所以我喜歡這樣

    DataTable dtCustomer = new DataTable();

         using (SqlConnection conn = new SqlConnection(cs.connString))
                {
                    string query = "SELECT * FROM tbl_customer ORDER BY customerName ASC;";

                    using (SqlDataAdapter adap = new SqlDataAdapter(query, conn))
                    {
                        adap.Fill(dtCustomer);

                    }
                }

var resultCustomer = from row in dtCustomer.AsEnumerable()
                                         where row.Field<string>("customerAddress") == addressValue
                                         select new
                                         {
                                             customerName = row["customerName"].ToString(),
                                             customerAddress = row2["customerAddress"].ToString(),

                                         };

 dgvListCustomer.DataSource = resultCustomer;

工作流SQL> DATATABLE> LINQ> DataGridView是否適合過濾記錄? 或者,如果有更好的建議,則歡迎您。

謝謝..:)

我擔心應用程序需要很長時間才能下載記錄或過濾記錄。

歡迎使用-您似乎生活在像我這樣的世界中,性能毫秒數以毫秒為單位,是的,在低功耗服務器上,熱加載和過濾10.000行可能要花費超過一毫秒(0.001秒)的時間。

因此,我的建議是不要將該數據庫放在平板電腦或移動電話上,而應至少為數據庫服務器使用一個不錯的桌面級計算機或VM。

提示:我經常在十億行表上進行查詢,而且速度很快。 如今,低於一百萬行的內容是一個笑話-實際上,當我15年前開始使用數據庫時,這沒什么值得一提的。 您是在詢問是否有法拉利或保時捷beau beauese更好的人,您擔心這些情況是否會超過每小時20公里。

如果我將多達10,000行的所有記錄下載到數據網格視圖中,將是理想的選擇嗎?

為了被解雇? 是。 數據庫的舊規則:永遠不要加載比您更多的數據,尤其是當您沒有任何線索時。 忘記SQL方面-您將遇到10.000行及更多行的UI問題,尤其是可用性問題。

我們是否只需要使用SQL查詢? 或使用LINQ?

提示:Linq也在后台使用SQL。 問題是更多的-您想花多少時間為示例編寫無聊的,重復的手寫SQL代碼? 通常,假設您還執行“智能”操作,例如按名稱而不是按序引用字段,並要求“選擇*”而不是字段列表,則bot顯然是初學者的錯誤。

您絕對不應該(但是您可以)使用DataTable。 獲得有關編程數據庫的不錯的書。 RTFSM可能會有所幫助-兩者都是LINQ(我不確定您的意思是什么-LINQ是用於編譯器的語言,您需要一個實現程序,因此可以是NHibernate,Entity Framework,Linq2Sql,BlToolkit,僅此而已從LINQ查詢到sql語句)。

工作流SQL> DATATABLE> LINQ> DataGridView是否適合過濾記錄?

法拉利還適合將20噸煤從A運到B-可能是最糟糕的汽車。 GSour堆棧可能是我所見過的最糟糕的情況,但可以做到這一點,這是可以接受的-速度很慢,可以大量使用內存,但是您將獲得結果並有望被解雇。 您將數據從高性能數據庫中提取到數據表中,然后使用非集成技術(LINQ)進行過濾(不使用數據表中的索引)以進入另一層。

只是給您一個想法-這會讓您從很多“入門編程”課程中脫身。

關於什么:

LINQ

點。

提取要轉到UI的業務對象的集合。 期。

閱讀有關您所使用技術的至少一些示例代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM