【发布时间】:2014-07-02 02:44:11
【问题描述】:
我正在开发一个小型玩具应用程序,以扩展我对 Java JavaFx 和 Sql 的了解。我的本地网络中有一个 MySQL 服务器,我可以与之通信,并且可以填充、排序......等简单的 Tableview。数据只需要显示给用户,无需编辑。一切都很干净。
问题:
大约有 170 000 行和 10 个列,全部为
chars,要显示,这似乎很难在合理的时间内完成。查询是在启动期间完成的,大约需要 1 1/2 分钟才能看到表格。内存占用也很大,没有填充 Tableview 的应用程序大约 70 mb,所有数据都有 600-700 mb(用于填充 mysql 的 xml 文件大小为 70 mb .. .) !
-
排序真的很慢,我正在使用 Stringproperty,它应该会根据:JavaFx tableview sort is really slow how to improve sort speed as in java swing (如果我理解正确的话)但是自定义排序,到目前为止我还没有尝试过。
我的想法:
类似于移动应用程序设计,我认为适配器模式可以解决这些问题。因此,我创建了一个具有正确大小的元素的OberservableList,但在开始时只填充了行的限制。当我滚动完成(滚轮)时,必须通过sql-queries 提前使用新元素更新列表。这应该可以提高第一个问题的性能。好主意,但是如果用户要通过滚动条滚动(单击并向下拖动),我该怎么办,然后我会跳过某些条目,但我需要这些信息来给用户反馈滚动到的位置。
我该如何解决这个问题?
对于排序,我会使用 sql 排序方法,因此每次排序都会在 sql server 上执行,并会创建一个新的 OberservableList。和以前一样,在第一个查询中只会加载一定数量的数据。
如果这种方法也会影响内存占用,我不确定。
您的意见:
我的想法在Java、JavaFx 中合理可行吗?
我很想听听您对这些问题的看法。
谢谢。
【问题讨论】:
标签: java sql performance tableview