Files
duplicati/Duplicati/Library/Main/Database/Database schema/5. Optimize BlockSet-Tables.sql
T

55 lines
1.8 KiB
SQL

--CREATE TEMP TABLE "UPGRADE_BlocksetEntry"
-- AS SELECT "BlocksetID", "Index", "BlockID"
-- FROM "BlocksetEntry";
--DROP INDEX "BlocksetEntryIds_Forward";
--DROP INDEX "BlocksetEntryIds_Backwards";
--DROP TABLE "BlocksetEntry";
---- ["WITHOUT ROWID" works with SQLite v3.8.2 (eq System.Data.SQLite v1.0.90.0, rel 2013-12-23) and later]
--CREATE TABLE "BlocksetEntry" (
-- "BlocksetID" INTEGER NOT NULL,
-- "Index" INTEGER NOT NULL,
-- "BlockID" INTEGER NOT NULL
-- CONSTRAINT "BlocksetEntry_PK_IdIndex" PRIMARY KEY ("BlocksetID", "Index")
--) WITHOUT ROWID;
--INSERT INTO "BlocksetEntry" ("BlocksetID", "Index", "BlockID")
-- SELECT "BlocksetID", "Index", "BlockID"
-- FROM "UPGRADE_BlocksetEntry";
--DROP TABLE "UPGRADE_BlocksetEntry";
--/* As this table is a cross table we need fast lookup */
--CREATE INDEX "BlocksetEntryIds_Backwards" ON "BlocksetEntry" ("BlockID");
DROP INDEX "BlocksetEntryIds_Forward";
DROP INDEX "BlocksetEntryIds_Backwards";
ALTER TABLE "BlocksetEntry"
RENAME TO "UPGRADE_BlocksetEntry";
-- ["WITHOUT ROWID" works with SQLite v3.8.2 (eq System.Data.SQLite v1.0.90.0, rel 2013-12-23) and later]
CREATE TABLE "BlocksetEntry" (
"BlocksetID" INTEGER NOT NULL,
"Index" INTEGER NOT NULL,
"BlockID" INTEGER NOT NULL,
CONSTRAINT "BlocksetEntry_PK_IdIndex" PRIMARY KEY ("BlocksetID", "Index")
) WITHOUT ROWID;
INSERT INTO "BlocksetEntry" ("BlocksetID", "Index", "BlockID")
SELECT "BlocksetID", "Index", "BlockID"
FROM "UPGRADE_BlocksetEntry";
DROP TABLE "UPGRADE_BlocksetEntry";
/* As this table is a cross table we need fast lookup */
CREATE INDEX "BlocksetEntry_IndexIdsBackwards" ON "BlocksetEntry" ("BlockID");
/* Add index for faster volume based block access (for compacting) */
CREATE INDEX "Block_IndexByVolumeId" ON "Block" ("VolumeID");
UPDATE "Version" SET "Version" = 5;