[英]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.