【发布时间】:2014-06-10 16:31:39
【问题描述】:
我正在编写一个基于 sqlite 数据库的 C++ 程序。
我有一张表table1,里面有各种字段。有很多函数需要读取table1的每一列:
select * from table1 where (condition);
查询的结果存储在合适的内存结构中。
其他函数只需要table1的第一个字段:
select field1 from table1 where (condition);
我可以通过执行第一个查询并仅读取保存它的内存结构中的第一个字段来获取field1 的值,或者我可以实现一个调用第二个查询的函数。
我应该这样做以提高程序的性能吗?
【问题讨论】:
-
对我来说,更多的是“意图”而不是“性能”。如果我只需要“field1”,那么我只会把它捡起来,而不是把所有东西都捡起来然后默默地丢弃它们。此外,在这种方法中,此特定查询对未来的任何架构更改更具弹性。
-
虽然对于本地数据库可能无关紧要,但通过网络拉回数据的查询可能会使用
*而不是所需的字段来拉取更多数据。