首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用磁盘上的实际数据库文件创建SQLite数据库的内存中索引

是否可以使用磁盘上的实际数据库文件创建SQLite数据库的内存中索引
EN

Stack Overflow用户
提问于 2017-02-17 18:22:14
回答 2查看 955关注 0票数 1

为了减小数据库的文件大小,我想在内存中创建(如果可能的话)-从SQLite创建基于文件的数据库的索引。

例如,数据库文件ABC.db3,但在ABC.db3中的各个字段上创建索引,而无需将基于ABC.db3文件的数据库的内容复制到内存中的数据库中,但获得与在基于文件的ABC.db3上执行搜索时一样的性能(或者甚至更好,因为索引是基于内存的)?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-17 18:43:09

对于内置索引,这是不可能的。

您必须手动进行索引,例如,如下所示:

代码语言:javascript
复制
CREATE TABLE disk.Tab (
    ID   INTEGER PRIMARY KEY,
    Name TEXT,
    [...]
);

CREATE TABLE memdb.IndexOnTab (
    Name TEXT,
    ID   INTEGER,
    PRIMARY KEY (Name, ID)
) WITHOUT ROWID; -- clustered index

INSERT INTO IndexOnTab SELECT Name, ID FROM Tab;

-- instead of SELECT * FROM Tab WHERE Name = ?
SELECT *
FROM Tab
WHERE ID = (SELECT ID
            FROM IndexOnTab
            WHERE Name = ?);

也许可以在virtual table中隐藏这一点,但这可能不值得这么做。

票数 0
EN

Stack Overflow用户

发布于 2017-02-17 20:45:44

您可以将现有数据库加载到以":memory:“作为文件路径打开的数据库中。然后,您可以向该数据库添加索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42295352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档