diff --git a/dspace/CHANGES b/dspace/CHANGES index 99355f051d..1512bbb86c 100644 --- a/dspace/CHANGES +++ b/dspace/CHANGES @@ -1,5 +1,8 @@ 1.4 beta 1 ========== +(Martin Hald) +- SF Patch #1455107 - MetadataValue Database Index + (Phillip Franks) - SF Patch #1456173 - updated database_schema.sql for Oracle (partially fixes SF bug #1455290) diff --git a/dspace/etc/database_schema.sql b/dspace/etc/database_schema.sql index 855ceb8b12..71a5048db2 100644 --- a/dspace/etc/database_schema.sql +++ b/dspace/etc/database_schema.sql @@ -285,7 +285,7 @@ CREATE TABLE MetadataFieldRegistry ( metadata_field_id INTEGER PRIMARY KEY DEFAULT NEXTVAL('metadatafieldregistry_seq'), metadata_schema_id INTEGER NOT NULL REFERENCES MetadataSchemaRegistry(metadata_schema_id), - element VARCHAR(64), + element VARCHAR(64) UNIQUE, qualifier VARCHAR(64), scope_note TEXT ); @@ -316,8 +316,9 @@ CREATE VIEW dcvalue AS -- instantiating the item object, which grabs all values -- related to that item CREATE INDEX metadatavalue_item_idx ON MetadataValue(item_id); +CREATE INDEX metadatavalue_item_idx2 ON MetadataValue(item_id,metadata_field_id); CREATE INDEX metadatafield_schema_idx ON MetadataFieldRegistry(metadata_schema_id); - + ------------------------------------------------------- -- Community table ------------------------------------------------------- diff --git a/dspace/etc/database_schema_13-14.sql b/dspace/etc/database_schema_13-14.sql index 05f72545b2..7321bb44fa 100644 --- a/dspace/etc/database_schema_13-14.sql +++ b/dspace/etc/database_schema_13-14.sql @@ -88,7 +88,7 @@ CREATE SEQUENCE metadatavalue_seq; CREATE TABLE MetadataSchemaRegistry ( metadata_schema_id INTEGER PRIMARY KEY DEFAULT NEXTVAL('metadataschemaregistry_seq'), - namespace VARCHAR(256), + namespace VARCHAR(256) UNIQUE, short_id VARCHAR(32) ); @@ -113,6 +113,11 @@ CREATE TABLE MetadataValue place INTEGER ); +-- Create the Metadata table indexes +CREATE INDEX metadatavalue_item_idx ON MetadataValue(item_id); +CREATE INDEX metadatavalue_item_idx2 ON MetadataValue(item_id,metadata_field_id); +CREATE INDEX metadatafield_schema_idx ON MetadataFieldRegistry(metadata_schema_id); + -- Create the DC schema INSERT INTO MetadataSchemaRegistry VALUES (1,'http://dublincore.org/documents/dcmi-terms/','dc'); diff --git a/dspace/etc/oracle/database_schema.sql b/dspace/etc/oracle/database_schema.sql index 3209d5ce49..ffa5054bdd 100644 --- a/dspace/etc/oracle/database_schema.sql +++ b/dspace/etc/oracle/database_schema.sql @@ -238,7 +238,7 @@ CREATE INDEX bundle2bitstream_bundle_idx ON Bundle2Bitstream(bundle_id); CREATE TABLE MetadataSchemaRegistry ( metadata_schema_id INTEGER PRIMARY KEY, - namespace VARCHAR(256), + namespace VARCHAR(256) UNIQUE, short_id VARCHAR(32) ); @@ -277,6 +277,7 @@ CREATE VIEW dcvalue AS -- instantiating the item object, which grabs all values -- related to that item CREATE INDEX metadatavalue_item_idx ON MetadataValue(item_id); +CREATE INDEX metadatavalue_item_idx2 ON MetadataValue(item_id,metadata_field_id); CREATE INDEX metadatafield_schema_idx ON MetadataFieldRegistry(metadata_schema_id); ------------------------------------------------------- diff --git a/dspace/etc/oracle/database_schema_13-14.sql b/dspace/etc/oracle/database_schema_13-14.sql index 6502d4f65b..441b425381 100644 --- a/dspace/etc/oracle/database_schema_13-14.sql +++ b/dspace/etc/oracle/database_schema_13-14.sql @@ -88,7 +88,7 @@ CREATE SEQUENCE metadatavalue_seq; CREATE TABLE MetadataSchemaRegistry ( metadata_schema_id INTEGER PRIMARY KEY, - namespace VARCHAR(256), + namespace VARCHAR(256) UNIQUE, short_id VARCHAR(32) ); @@ -141,6 +141,12 @@ SELECT setval('metadataschemaregistry_seq', max(metadata_schema_id)) FROM metada DROP TABLE dctyperegistry; +-- create indexes for the metadata tables +CREATE INDEX metadatavalue_item_idx ON MetadataValue(item_id); +CREATE INDEX metadatavalue_item_idx2 ON MetadataValue(item_id,metadata_field_id); +CREATE INDEX metadatafield_schema_idx ON MetadataFieldRegistry(metadata_schema_id); + + ------------------------------------------------------- -- Create the checksum checker tables -------------------------------------------------------