我很抱歉他们多次询问这个问题,但我还没有找到最佳答案。
我担心应用需要很长时间来下载记录或过滤记录。假设我有一个表名为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&gt; DATATABLE&GT; LINQ&gt; DataGridView 适合过滤记录吗?或者,如果有更好的建议是最受欢迎的。
谢谢你...... :)
答案 0 :(得分:1)
我担心应用程序需要很长时间才能下载记录或过滤记录。
欢迎 - 您似乎生活在像我这样的世界中,以毫秒为单位测量性能毫秒,是的,在低功率服务器上,热负载和过滤10.000行的时间可能超过一毫秒(0.001秒)。 / p>
因此,我的建议不是将数据库放在平板电脑或手机上,而是至少使用适当的桌面级计算机或数据库服务器的VM。
作为提示:我经常在十亿行表上查询,而且速度很快。如今,任何低于一百万行的东西都是一个笑话 - 事实上,当我15年前开始使用数据库时,这并不值得一提。你是那个问一个法拉利或保时捷是否更好的人,因为你担心这些情况是否超过20公里/小时。
如果我将最多10,000行的所有记录下载到数据网格视图中,那将是理想的吗?
为了被解雇?是。数据库的旧规则:永远不会加载比您更多的数据,尤其是当您没有线索时。忘记SQL方面 - 你会遇到10.000行甚至更多的UI问题,尤其是可用性问题。
我们只需要使用SQL查询吗?还是使用LINQ?
提示:Linq也在使用SQL。问题是更多 - 你想花多少时间在手写的SQL中编写无聊的重复代码?特别是你也做了“聪明”的事情,比如按名称引用字段,而不是顺序引用字段,并要求“select *”而不是字段列表,机器人显然是初学者错误。
你绝对不应该做的事 - 但是你做的 - 正在使用DataTable。获得一本关于编程数据库的书。 RTFSM可能有所帮助 - 两个LINQ(我不确定你的意思 - LINQ是编译器的一种语言,你需要一个实现者,所以可能是NHibernate,实体框架,Linq2Sql,BlToolkit,仅举几个例子)从LINQ查询到sql语句。)
工作流程SQL&gt; DATATABLE&GT; LINQ&gt; DataGridView适合过滤记录吗?
法拉利也适合从A到B运输20吨煤 - 这是最糟糕的汽车。 GSour堆栈可能是我见过的最糟糕的,但是你能做到这一点很合适 - 缓慢,大量使用,但你会得到一个结果并希望被解雇。您将数据从高性能数据库拉入数据表,然后使用非集成技术(LINQ)过滤(不使用数据表中的索引)进入另一层。
只是为了给你一个想法 - 这可以让你从一些“开始编程”课程中删除。
怎么样:
LINQ
点。
拉出转到UI的业务对象集合。周期。
至少阅读一些您使用的技术的示例代码。