From 2c6b80f4003ec67e52baa5f546ee3ceee0827e31 Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Fri, 27 Jun 2014 09:38:38 +0100 Subject: [PATCH] MDL-48069 files: Switch the field order of index on mdl_files_reference To improve performance of file_storage::search_references --- lib/db/install.xml | 6 +++--- lib/db/upgrade.php | 18 ++++++++++++++++++ version.php | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/lib/db/install.xml b/lib/db/install.xml index a3a89fc33bb..0d0b9bc12e5 100644 --- a/lib/db/install.xml +++ b/lib/db/install.xml @@ -1,5 +1,5 @@ - @@ -2359,7 +2359,7 @@ - + @@ -3034,4 +3034,4 @@
-
+ \ No newline at end of file diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index 8f6d715b381..b8b246b5f0a 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -3714,5 +3714,23 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2014051202.11); } + // Switch the order of the fields in the files_reference index, to improve the performance of search_references. + if ($oldversion < 2014051203.08) { + $table = new xmldb_table('files_reference'); + $index = new xmldb_index('uq_external_file', XMLDB_INDEX_UNIQUE, array('repositoryid', 'referencehash')); + if ($dbman->index_exists($table, $index)) { + $dbman->drop_index($table, $index); + } + upgrade_main_savepoint(true, 2014051203.08); + } + if ($oldversion < 2014051203.09) { + $table = new xmldb_table('files_reference'); + $index = new xmldb_index('uq_external_file', XMLDB_INDEX_UNIQUE, array('referencehash', 'repositoryid')); + if (!$dbman->index_exists($table, $index)) { + $dbman->add_index($table, $index); + } + upgrade_main_savepoint(true, 2014051203.09); + } + return true; } diff --git a/version.php b/version.php index 2b25c817f33..2aa893c4dfe 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2014051203.07; // 20140512 = branching date YYYYMMDD - do not modify! +$version = 2014051203.09; // 20140512 = branching date YYYYMMDD - do not modify! // RR = release increments - 00 in DEV branches. // .XX = incremental changes.