diff --git a/src/backend/db/db.sql b/src/backend/db/db.sql index 6d6be3ca..189b2012 100644 --- a/src/backend/db/db.sql +++ b/src/backend/db/db.sql @@ -157,7 +157,7 @@ CREATE TABLE Measurement ( values float4[] NOT NULL, - primary key (invocation, runId, trialId, criterion), + primary key (runId, trialId, criterion, invocation), foreign key (trialId) references Trial (id), foreign key (runId) references Run (id), foreign key (criterion) references Criterion (id) @@ -171,7 +171,7 @@ CREATE TABLE ProfileData ( value text NOT NULL, - primary key (numIterations, invocation, runId, trialId), + primary key (runId, trialId, numIterations, invocation), foreign key (trialId) references Trial (id), foreign key (runId) references Run (id) ); diff --git a/src/backend/db/schema-updates/migration.015.sql b/src/backend/db/schema-updates/migration.015.sql new file mode 100644 index 00000000..78fb2368 --- /dev/null +++ b/src/backend/db/schema-updates/migration.015.sql @@ -0,0 +1,9 @@ +-- The PK is wrongly ordered and makes queries for getting measurements very slow +-- because we end up scanning through all of the table. +ALTER TABLE Measurement + DROP CONSTRAINT measurement_pkey, + ADD CONSTRAINT measurement_pkey PRIMARY KEY (runid, trialid, criterion, invocation); + +ALTER TABLE ProfileData + DROP CONSTRAINT profiledata_pkey, + ADD CONSTRAINT profiledata_pkey PRIMARY KEY (runid, trialid, numiterations, invocation);