gpt4 book ai didi

c++ - sqlite3数据库加载到内存c++并选择性能

转载 作者:行者123 更新时间:2023-11-28 07:06:06 36 4
gpt4 key购买 nike

在对它进行任何SELECTS之前,是否有任何方法可以将sqlite3数据库文件从磁盘加载到内存中? sqlite3_step() 工作真的很慢...所以我想将数据库加载到内存中以快速加载数据。

在 sqlite3 之前,我使用简单的二进制数据序列化,stackoverflow 的所有成员都建议我使用 sqlite3 进行序列化,现在我的程序真的很慢..慢到我无法反序列化所有数据. (序列化与交易配合得很好)

也许这也会有所帮助。我的 SELECT:每个未序列化的对象上有两个选择和两个 sqlite3_step()。两个查询的查询看起来像 SELECT aaaa,bbb,ccc,ddd,eee,ggg,hhh,fff,jjj FROM table。第一个表具有唯一的 aaaa 键,但第二个表不是唯一的(所以它似乎根本没有索引)

更新:

    // Create SQL statement
std::string sql_createtable = "CREATE TABLE IF NOT EXISTS ssssssss(" \
"sid INTEGER PRIMARY KEY NOT NULL," \
"last_access_time INT ," \
"last_c_time INT ," \
"total_c INT ," \
"last_viewed_lid INT ," \
"last_viewed_ltid INT );";
// "showed TEXT );";

std::string sql_showed = "CREATE TABLE IF NOT EXISTS showed(" \
"sid INT NOT NULL," \
"rid INT ," \
"lid INT ," \
"ltid INT );";

选择 1:

SELECT sid, last_access_time, last_c_time, total_c, last_viewed_lid, last_viewed_ltid FROM ssssss

选择2:

"SELECT rid, lid, ltid FROM showed WHERE sid= ?1"; // sid is from first table. can be more than 1 the same sid

嗯,似乎问题是 showed 第二个表中的 sid 不是唯一的,也没有索引?如何为此语句添加索引?

也许还有其他建议?

最佳答案

你想添加索引。由于该列不是唯一的,您需要使用单独的命令添加它:

CREATE INDEX showed_sid ON showed (sid);

创建表后立即执行此操作。

关于c++ - sqlite3数据库加载到内存c++并选择性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21738880/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com