0

我很抱歉他们问这个问题已经被问了很多次了,但我仍然没有找到最好的答案。

我担心应用程序需要很长时间才能下载记录过滤记录。假设我有一个名为 tbl_customer的表。并在 tbl_customer 中记录超过10,000 行

第一个问题,我使用Data Grid View 来显示记录。如果我将最多 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;

Workflow SQL> DATATABLE> LINQ > DataGridView适合过滤记录吗?或者如果有更好的建议欢迎。

谢谢..:)

4

1 回答 1

1

我担心应用程序需要很长时间才能下载记录或过滤记录。

欢迎 - 您似乎生活在像我这样的世界中,性能毫秒以毫秒为单位,是的,在低功耗服务器上,热加载和过滤 10.000 行可能需要超过一毫秒(0.001 秒)。

因此,我的建议是不要将该数据库放在平板电脑或手机上,而是至少为数据库服务器使用一个像样的桌面级计算 r 或 VM。

作为提示:我经常对十亿行表进行查询,而且速度很快。如今,任何低于一百万行的东西都是一个笑话——事实上,当我在 15 多年前开始使用数据库时,这没什么值得一提的。你是那种问是法拉利还是保时捷更好的人,因为你担心这些情况是否超过 20 公里/小时。

如果我将最多 10,000 行的所有记录下载到数据网格视图中会很理想吗?

为了被解雇?是的。数据库的旧规则:永远不要加载超过你必须加载的数据,尤其是当你不知道的时候。忘记 SQL 方面 - 你会遇到 10.000 行及更多行的 UI 问题,尤其是可用性问题。

我们只需要使用 SQL 进行查询吗?还是使用 LINQ?

提示:Linq 也在后台使用 SQL。问题更多 - 您想花多少时间为示例中的手写 SQL 编写无聊的重复代码?特别是考虑到您还做了“聪明”的事情,例如按名称引用字段,而不是序数,并要求“选择 *”而不是字段列表,机器人明显的初学者错误。

你绝对不应该做的——但你应该做的——是使用 DataTable。获得一本关于编程数据库的体面的书。RTFSM 可能有帮助 - 两种 LINQ(我不确定你的意思 - LINQ 是编译器的一种语言,你需要一个实现者,所以它可能是 NHibernate、实体框架、Linq2Sql、BlToolkit,仅举几个例子从 LINQ 查询到 sql 语句)。

Workflow SQL> DATATABLE> LINQ > DataGridView 适合过滤记录吗?

一辆法拉利也适合将 20 吨煤炭从 A 运输到 B—​​—这对它来说是最糟糕的汽车。GSour 堆栈可能是我见过的最糟糕的堆栈,但它是合适的,因为你可以做到 - 缓慢,大量使用内存,但你会得到一个结果并希望被解雇。您将数据从高性能数据库提取到数据表中,然后使用非集成技术 (LINQ) 进行过滤(不使用数据表中的索引)以进入另一层。

只是给你一个想法——这会让你从相当多的“入门编程”课程中删除。

关于什么:

LINQ

观点。

拉取一组进入 UI 的业务对象。时期。

至少阅读您使用的技术的一些示例代码。

于 2012-11-18T13:53:29.057 回答