我一直在使用fat32文件系统。我有一个4 GB大小的数据库。数据库由1个父表和1个子表组成。父表有10行,子表有4000行。 1行子表的大小为1 MB。
当我删除父表中的行时,删除级联1MB大小的子记录。 (pragma foreign_keys打开)当我尝试通过级联删除100 MB数据(1个父记录 - 100个子记录)时,完成需要太长时间(差不多1-10分钟),并且持续时间根据数据大小增加/减少(100 Mb:1-10分钟,300 MB:3-30分钟等)。
我尝试了其他帖子建议的一些pragma命令(synchronous,temp_store,journal_mode),我也尝试在外键上添加索引,但这些并没有帮助解决我的问题。(实际上,在外键上添加索引后,1 MB数据删除变得更快/ st,但100 MB数据删除持续时间没有变化)你能否给我任何提高删除性能的建议?
CREATE TABLE "ANHXT" (
"id" integer primary key autoincrement,
"ANH_AD" text,
"ANH_DBGMHWID" text,
"ANH_TYPE" integer,
"ANH_INDEXNO" int64_t
)
CREATE TABLE "PRCXT" (
"id" integer primary key autoincrement,
"ANP_SEGMENTNO" integer not null,
"ANP_VALUE" blob,
"ANH_PRC_id" bigint,
constraint "fk_ANHPRC_ANH_PRC" foreign key ("ANH_PRC_id") references "ANHXT" ("id") on update cascade on delete cascade deferrable initially deferred
)
CREATE UNIQUE INDEX UQC_ANH_TYPE on ANHXT( ANH_TYPE)
CREATE UNIQUE INDEX UQC_ANP_SEGMENTNO_ANAHTARID on PRCXT( ANP_SEGMENTNO,ANH_PRC_id)
CREATE INDEX findex on PRCXT( ANH_PRC_id)