c# - 如何在 ASP.NET 核心中更快地将 mySQL 查询数据发送到客户端?
问题描述
在 ASP.NET 应用程序中,我从 mySQL 数据库中检索数据并将其发送到前端以在图形中使用。
在一种情况下,数据包含大约 2,700,000 行,这需要 15-20 秒(我使用 Stopwatch 类来测量命令之间的时间)。我正在尝试减少用户获取此数据所需的总时间。
这段时间至少有 10 秒用于.Read()
ing,即使在两次读取之间什么也没做,就像这样
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read()) {}
这就是我现在正在做的事情:
List<object> results = new List<object>();
while (reader.Read())
{
results.Add(new { type = reader.GetValue(0), time = reader.GetValue(1), value = reader.GetValue(2) });
} // 10-15 seconds for 2.7 million rows
string jsonstr = JsonConvert.SerializeObject(results); // 4 seconds
return jsonstr;
我也尝试将查询结果转换为 csv 文件,但两种方法都使用 MySqlDataReader 逐行读取 .Read() 。有没有更快的方法来处理数据点?
解决方案
推荐阅读
- linux - 每个 Linux fd 都有缓冲区吗?
- facebook-graph-api - 如何计算 Facebook 图形 API 覆盖 offset_y、offset_x?
- ruby-on-rails - 无法创建线程:资源暂时不可用
- android - 有没有办法从 Firestore 获取包含特定字符串的密钥的数据?
- sql - 如何从通过 SQL Developer 中的第三个“链接表”链接的 2 个表中检索数据?
- java - 如何使用 for 循环打印数组
- wpf - 使用 ResourceDictionary 时无法使用 XAML 绑定到类实例的属性
- javascript - 为什么 /0(\.\d+)?|1/.test('0.') 返回 true?
- react-native - 我从节点模块 react-native-cli-platform-android 得到错误
- javascript - 尝试更新下拉选择元素而不使用 Vanilla JavaScript 重新加载