Index: includes/path.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/path.inc,v retrieving revision 1.32 diff -u -p -r1.32 path.inc --- includes/path.inc 4 Jan 2009 20:04:32 -0000 1.32 +++ includes/path.inc 24 Mar 2009 10:55:04 -0000 @@ -66,7 +66,7 @@ function drupal_lookup_path($action, $pa return $map[$path_language][$path]; } // Get the most fitting result falling back with alias without language - $alias = db_query("SELECT dst FROM {url_alias} WHERE src = :src AND language IN(:language, '') ORDER BY language DESC", array( + $alias = db_query("SELECT dst FROM {url_alias} WHERE src = :src AND language IN(:language, '') ORDER BY language DESC, pid DESC", array( ':src' => $path, ':language' => $path_language)) ->fetchField(); @@ -80,7 +80,7 @@ function drupal_lookup_path($action, $pa $src = ''; if (!isset($map[$path_language]) || !($src = array_search($path, $map[$path_language]))) { // Get the most fitting result falling back with alias without language - if ($src = db_query("SELECT src FROM {url_alias} WHERE dst = :dst AND language IN(:language, '') ORDER BY language DESC", array( + if ($src = db_query("SELECT src FROM {url_alias} WHERE dst = :dst AND language IN(:language, '') ORDER BY language DESC, pid DESC", array( ':dst' => $path, ':language' => $path_language)) ->fetchField()) { Index: modules/system/system.install =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.install,v retrieving revision 1.312 diff -u -p -r1.312 system.install --- modules/system/system.install 17 Mar 2009 15:26:29 -0000 1.312 +++ modules/system/system.install 24 Mar 2009 10:55:11 -0000 @@ -1254,11 +1254,11 @@ function system_schema() { ), ), 'unique keys' => array( - 'dst_language' => array('dst', 'language'), + 'dst_language_pid' => array('dst', 'language', 'pid'), ), 'primary key' => array('pid'), 'indexes' => array( - 'src_language' => array('src', 'language'), + 'src_language_pid' => array('src', 'language', 'pid'), ), ); @@ -3203,11 +3203,15 @@ function system_update_7017() { } /** - * Replace src index on the {url_alias} table with src, language. + * Improve indexes on the {url_alias} table. + * + * Add language and pid columns to indexes to improve performance. */ function system_update_7018() { $ret = array(); - db_add_index($ret, 'url_alias', 'src_language', array('src', 'language')); + db_drop_index($ret, 'url_alias', 'dst_language'); + db_add_index($ret, 'url_alias', 'dst_language_pid', array('dst', 'language', 'pid')); + db_add_index($ret, 'url_alias', 'src_language_pid', array('src', 'language', 'pid')); db_drop_index($ret, 'url_alias', 'src'); return $ret;