【问题标题】:Sqlite - Different queries, different speeds?Sqlite - 不同的查询,不同的速度?
【发布时间】:2014-06-10 16:31:39
【问题描述】:

我正在编写一个基于 sqlite 数据库的 C++ 程序。 我有一张表table1,里面有各种字段。有很多函数需要读取table1的每一列:

select * from table1 where (condition);

查询的结果存储在合适的内存结构中。

其他函数只需要table1的第一个字段:

select field1 from table1 where (condition);

我可以通过执行第一个查询并仅读取保存它的内存结构中的第一个字段来获取field1 的值,或者我可以实现一个调用第二个查询的函数。 我应该这样做以提高程序的性能吗?

【问题讨论】:

  • 对我来说,更多的是“意图”而不是“性能”。如果我只需要“field1”,那么我只会把它捡起来,而不是把所有东西都捡起来然后默默地丢弃它们。此外,在这种方法中,此特定查询对未来的任何架构更改更具弹性。
  • 虽然对于本地数据库可能无关紧要,但通过网络拉回数据的查询可能会使用* 而不是所需的字段来拉取更多数据。

标签: c++ sql sqlite


【解决方案1】:

您应该使用第二个查询,主要不是出于性能考虑,而是因为它更清楚地表明了代码的用途。一旦你查询了所有字段,然后除了一个以外的所有字段都扔掉了,有人会开始调试代码并想知道为什么所有其他字段都没有使用。

正交我想指出,以编程方式使用select * 只是询问当表架构更改时出现的问题。我强烈建议明确说明您需要的列,即使该列表是“所有当前可用的列”。

【讨论】:

  • 非常感谢。我通常指定所有列的名称,为了简单起见,我写了*
猜你喜欢
  • 2016-08-28
  • 2013-08-17
  • 1970-01-01
  • 2014-06-18
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
相关资源
最近更新 更多