【问题标题】:Is it bad (performance) to get the sum from a database query instead of adding the results on Android?从数据库查询中获取总和而不是在 Android 上添加结果是否很糟糕(性能)?
【发布时间】:2015-10-10 06:42:45
【问题描述】:

我在一个 Android 应用中有一个 SQLite 数据库,用于存储基本交易信息(日期、金额、类别、cmets)。我知道我可以很容易地进行查询以获取两个日期之间特定类别的所有交易,但我想为两个日期之间特定类别的每笔交易加起来成本(在 SQLite 中存储为实数)。我知道 SQLite 中有一个 sum 函数(感谢this 问题),但this other 问题中的最后一个答案让我质疑这样做的性能成本。

据我了解,SQLite 是用本机代码编写的,这对移动设备来说是一个胜利,其中性能是关键。所以我被告知在 java 中做的更少,让 SQLite 在本机代码中做它最擅长的事情(我所说的本机代码是指 C / C++)。

因此,在 Android 的情况下,将光标移至所有成本并循环以获取总成本(在 java 代码中)更好,还是将这一提升留给 SQLite 更好?我只是不确定 SQLite 在 Android 上做了哪些优化。

谢谢!

【问题讨论】:

  • 同时尝试并计时。在 SQLite 中它当然不是更快。原生代码总是更快是一个常见的误解。还要考虑决策的可维护性和复杂性。
  • 一般来说,您希望在数据库中进行操作——数据库应该针对它们实现的操作进行优化,并减少来回传递的数据。不过,与任何一般规则一样,您应该验证系统上的数据。

标签: java android sqlite native


【解决方案1】:

一般而言,您应该依赖您的数据库。否则,我们将始终使用 select * from table 获取所有数据,并自己进行所有操作。

与已接受的答案相比,您正在考虑一个非常不受欢迎的答案。例如,查看this question。以及this one的最后一个答案。

但我相信这将是mother question

【讨论】:

  • we'd always get all of our data with a select * from table不是一种健康的做法。你应该总是得到only the columns you really need
猜你喜欢
  • 2013-03-28
  • 2018-01-20
  • 1970-01-01
  • 2012-02-27
  • 2020-01-29
  • 2020-12-02
  • 2010-10-18
  • 2012-02-17
  • 1970-01-01
相关资源
最近更新 更多