gpt4 book ai didi

sql - 选择SQLite表的许多行时应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 16:53:54 26 4
gpt4 key购买 nike

我有一个SQLite数据库问题。

我有一个包含600万行的表。

当我执行Select * from that_table时,我可以在Widows Task Manager中看到内存使用量大量增加。
这使我的应用程序崩溃。

我在firefox中有一个用于SQLite的管理工具插件。当我执行相同的查询时,该工具也会崩溃。

有没有办法选择这么多行而不会崩溃?

我猜想600万行不是很多-SQLite是否应该能够处理呢?

该应用程序用C#编写。数据来自传感器,并存储在ChartObject类型的列表中。 ChartObject是6个属性的结构:

public struct ChartObject
{
public ISensor Sensor { get; set; }

public DateTime Category { get; set; }

public double ValueX { get; set; }

public double? ValueY { get; set; }

public double? ValueY2 { get; set; }

public string Tooltip { get; set; }
}

此列表最多包含200万个ChartObject。
ChartObject用于包含1个测量点,x值,y值,校准的y值(ValueY2)和测量该点的传感器。

我使用此列表在图表上绘制数据。

最佳答案

问题不在于sqlite,而是您使用结果集的方式。如果您需要从表中的每一行创建一个新的ChartObject,请像这样遍历它们:

foreach (var myrow in (from x in that_table select x))
{
var myChartObject = new ChartObject();
// populate myChartObject fields from myrow
// add myChartObject to the actual chart
}

如果您在Linq查询中调用 ToList()时出错,则将不必要地将所有这些行加载到内存中。如果您不需要同时在内存中的行,则可以避免这种情况。请记住,200万个 ChartObjects本身将需要大量内存。

关于sql - 选择SQLite表的许多行时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19725313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com