我有一个比较大的SQLite数据库(~900 MB),里面有3个表。我最近通过软件SQLlitebrowser从主表中删除了一个字段。我使用了这里找到的答案:Delete column from SQLite table
我基本上跑了这个:
response()->download(...)
我还尝试通过python脚本运行该查询。
更改数据库后,写入主表的速度非常慢。 当我尝试在原始数据库上写入时(我在删除字段之前做了备份),我可以写入主表或多或少10000倍。
你知道为什么会这样吗?我试图对新更改的数据库进行抽真空,但性能损失仍然存在。
编辑:
@neuhaus:我在新桌子上跑了.schema(我第一次听到它,请原谅我,如果我误用了它):
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(id, percentage_match, doi, title, date, journal, authors, abstract, graphical_abstract, liked, url, new, topic_simple, author_simple);
INSERT INTO t1_backup SELECT id, percentage_match, doi, title, date, journal, authors, abstract, graphical_abstract, liked, url, new, topic_simple, author_simple FROM papers;
DROP TABLE papers;
CREATE TABLE papers(id, percentage_match, doi, title, date, journal, authors, abstract, graphical_abstract, liked, url, new, topic_simple, author_simple);
INSERT INTO papers SELECT id, percentage_match, doi, title, date, journal, authors, abstract, graphical_abstract, liked, url, new, topic_simple, author_simple FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;
在旧桌子上:
sqlite> .schema papers
CREATE TABLE papers(id, percentage_match, doi, title, date, journal, authors, abstract, graphical_abstract, liked, url, new, topic_simple, author_simple);
显然存在差异。似乎新表中没有字段的类型。你怎么想,我该如何纠正? ?
答案 0 :(得分:0)
使用sqlite3
实用程序及其.schema
命令比较旧表和新表的架构。
新表可能缺少索引。
使用.schema
命令的输出(不包含要删除的列)给出的CREATE TABLE语句,而不是您现在使用的语句。