Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite-不同的查询,不同的速度? 我正在编写一个基于SQLite数据库的C++程序。 我有一个带有各种字段的表table1。有许多函数需要读取表1的每一列: select * from table1 where (condition); select field1 from table1 where (condition);_C++_Sql_Sqlite - Fatal编程技术网

Sqlite-不同的查询,不同的速度? 我正在编写一个基于SQLite数据库的C++程序。 我有一个带有各种字段的表table1。有许多函数需要读取表1的每一列: select * from table1 where (condition); select field1 from table1 where (condition);

Sqlite-不同的查询,不同的速度? 我正在编写一个基于SQLite数据库的C++程序。 我有一个带有各种字段的表table1。有许多函数需要读取表1的每一列: select * from table1 where (condition); select field1 from table1 where (condition);,c++,sql,sqlite,C++,Sql,Sqlite,查询结果存储在适当的内存结构中 其他功能只需要表1的第一个字段: select * from table1 where (condition); select field1 from table1 where (condition); 我可以通过执行第一个查询并只读取存储它的内存结构中的第一个字段来获取field1的值,或者我可以实现调用第二个查询的函数。 我是否应该这样做以提高程序的性能?您应该使用第二个查询,这不仅仅是因为性能问题,而是因为它更清楚地表明了代码的用途。一旦您查询所有字段,

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

其他功能只需要
表1的第一个字段

select * from table1 where (condition);
select field1 from table1 where (condition);
我可以通过执行第一个查询并只读取存储它的内存结构中的第一个字段来获取
field1
的值,或者我可以实现调用第二个查询的函数。
我是否应该这样做以提高程序的性能?

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


从正交的角度来看,我想指出,以编程的方式使用
select*
只是在表模式发生变化时提出问题。我强烈建议明确列出您需要的列,即使该列表是“所有当前可用列”。

对我来说,它更多的是关于“意图”而不是“性能”。如果我只需要“字段1”,那么我只会选择它,而不是选择所有内容,然后默默地丢弃它们。此外,在这种方法中,此特定查询对将来的任何架构更改都更具弹性。虽然这对本地数据库可能并不重要,但通过网络拉回数据的查询可以使用
*
而不是所需字段拉回更多数据。非常感谢。我通常指定所有列的名称,为了简单起见,我编写了
*