diff --git a/administrator/components/com_admin/sql/updates/mysql/3.6.0-2016-05-07.sql b/administrator/components/com_admin/sql/updates/mysql/3.6.0-2016-05-07.sql new file mode 100644 index 0000000000000..cc4ff0ee9bbe0 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/3.6.0-2016-05-07.sql @@ -0,0 +1,8 @@ +ALTER TABLE `#__languages` ADD INDEX `idx_published_ordering` (`published`,`ordering`); +ALTER TABLE `#__session` DROP PRIMARY KEY, ADD PRIMARY KEY (`session_id`(32)); +ALTER TABLE `#__session` DROP INDEX `time`, ADD INDEX `time` (`time`(10)); +ALTER TABLE `#__template_styles` ADD INDEX `idx_client_id` (`client_id`); +ALTER TABLE `#__contentitem_tag_map` ADD INDEX `idx_alias_item_id` (`type_alias`(100),`content_item_id`); +ALTER TABLE `#__extensions` ADD INDEX `idx_type_ordering` (`type`,`ordering`); +ALTER TABLE `#__menu` ADD INDEX `idx_client_id_published_lft` (`client_id`,`published`,`lft`); +ALTER TABLE `#__viewlevels` ADD INDEX `idx_ordering_title` (`ordering`,`title`); diff --git a/administrator/components/com_admin/sql/updates/postgresql/3.6.0-2016-05-07.sql b/administrator/components/com_admin/sql/updates/postgresql/3.6.0-2016-05-07.sql new file mode 100644 index 0000000000000..10ef6bd05342d --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/3.6.0-2016-05-07.sql @@ -0,0 +1,6 @@ +CREATE INDEX "#__languages_idx_published_ordering" ON "#__languages" ("published","ordering"); +CREATE INDEX "#__template_styles_idx_client_id" ON "#__template_styles" ("client_id"); +CREATE INDEX "#__contentitem_tag_map_idx_alias_item_id" ON "#__contentitem_tag_map" ("type_alias","content_item_id"); +CREATE INDEX "#__extensions_idx_type_ordering" ON "#__extensions" ("type","ordering"); +CREATE INDEX "#__menu_idx_client_id_published_lft" ON "#__menu" ("client_id","published","lft"); +CREATE INDEX "#__viewlevels_idx_ordering_title" ON "#__viewlevels" ("ordering","title"); diff --git a/administrator/components/com_admin/sql/updates/sqlazure/3.6.0-2016-05-07.sql b/administrator/components/com_admin/sql/updates/sqlazure/3.6.0-2016-05-07.sql new file mode 100644 index 0000000000000..cecbd906aab71 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/sqlazure/3.6.0-2016-05-07.sql @@ -0,0 +1,36 @@ +CREATE NONCLUSTERED INDEX [idx_published_ordering] ON [#__languages] +( + [published] ASC, + [ordering] ASC +)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + +CREATE NONCLUSTERED INDEX [idx_client_id] ON [#__template_styles] +( + [client_id] ASC +) +WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + +CREATE NONCLUSTERED INDEX [idx_alias_item_id] ON [#__contentitem_tag_map] +( + [type_alias] ASC, + [content_item_id] ASC +)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + +CREATE NONCLUSTERED INDEX [idx_type_ordering] ON [#__extensions] +( + [type] ASC, + [ordering] ASC +)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + +CREATE NONCLUSTERED INDEX [idx_client_id_published_lft] ON [#__menu] +( + [client_id] ASC, + [published] ASC, + [lft] ASC +)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + +CREATE NONCLUSTERED INDEX [idx_ordering_title] ON [#__viewlevels] +( + [ordering] ASC, + [title] ASC +)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); diff --git a/installation/sql/mysql/joomla.sql b/installation/sql/mysql/joomla.sql index 73464ef16b8b3..43e9f8dc0e989 100644 --- a/installation/sql/mysql/joomla.sql +++ b/installation/sql/mysql/joomla.sql @@ -1,4 +1,4 @@ -SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; -- @@ -434,7 +434,8 @@ CREATE TABLE IF NOT EXISTS `#__contentitem_tag_map` ( UNIQUE KEY `uc_ItemnameTagid` (`type_id`,`content_item_id`,`tag_id`), KEY `idx_tag_type` (`tag_id`,`type_id`), KEY `idx_date_id` (`tag_date`,`tag_id`), - KEY `idx_core_content_id` (`core_content_id`) + KEY `idx_core_content_id` (`core_content_id`), + KEY `idx_alias_item_id` (`type_alias`,`content_item_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci COMMENT='Maps items from content tables to tags'; -- -------------------------------------------------------- @@ -475,7 +476,8 @@ CREATE TABLE IF NOT EXISTS `#__extensions` ( PRIMARY KEY (`extension_id`), KEY `element_clientid` (`element`,`client_id`), KEY `element_folder_clientid` (`element`,`folder`,`client_id`), - KEY `extension` (`type`,`element`,`folder`,`client_id`) + KEY `extension` (`type`,`element`,`folder`,`client_id`), + KEY 'idx_type_ordering' ('type','ordering') ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=10000; -- @@ -1196,7 +1198,8 @@ CREATE TABLE IF NOT EXISTS `#__languages` ( UNIQUE KEY `idx_image` (`image`), UNIQUE KEY `idx_langcode` (`lang_code`), KEY `idx_access` (`access`), - KEY `idx_ordering` (`ordering`) + KEY `idx_ordering` (`ordering`), + KEY 'idx_published_ordering' ('published','ordering') ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; -- @@ -1244,7 +1247,8 @@ CREATE TABLE IF NOT EXISTS `#__menu` ( KEY `idx_left_right` (`lft`,`rgt`), KEY `idx_alias` (`alias`(100)), KEY `idx_path` (`path`(100)), - KEY `idx_language` (`language`) + KEY `idx_language` (`language`), + KEY 'idx_client_id_published_lft' ('client_id','published','lft') ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=102; -- @@ -1558,11 +1562,12 @@ CREATE TABLE IF NOT EXISTS `#__session` ( `data` mediumtext, `userid` int(11) DEFAULT 0, `username` varchar(150) DEFAULT '', - PRIMARY KEY (`session_id`), + PRIMARY KEY (`session_id`(32)), KEY `userid` (`userid`), - KEY `time` (`time`) + KEY `time` (`time`(10)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; + -- -------------------------------------------------------- -- @@ -1632,7 +1637,8 @@ CREATE TABLE IF NOT EXISTS `#__template_styles` ( `params` text NOT NULL, PRIMARY KEY (`id`), KEY `idx_template` (`template`), - KEY `idx_home` (`home`) + KEY `idx_home` (`home`), + KEY 'idx_client_id' ('client_id') ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=9; -- @@ -1973,7 +1979,8 @@ CREATE TABLE IF NOT EXISTS `#__viewlevels` ( `ordering` int(11) NOT NULL DEFAULT 0, `rules` varchar(5120) NOT NULL COMMENT 'JSON encoded access control.', PRIMARY KEY (`id`), - UNIQUE KEY `idx_assetgroup_title_lookup` (`title`) + UNIQUE KEY `idx_assetgroup_title_lookup` (`title`), + KEY `idx_ordering_title` (`ordering`,`title`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=7; -- diff --git a/installation/sql/postgresql/joomla.sql b/installation/sql/postgresql/joomla.sql index 71c3a86325d1b..c42e41db8b77d 100644 --- a/installation/sql/postgresql/joomla.sql +++ b/installation/sql/postgresql/joomla.sql @@ -424,6 +424,7 @@ CREATE TABLE "#__contentitem_tag_map" ( CREATE INDEX "#__contentitem_tag_map_idx_tag_type" ON "#__contentitem_tag_map" ("tag_id", "type_id"); CREATE INDEX "#__contentitem_tag_map_idx_date_id" ON "#__contentitem_tag_map" ("tag_date", "tag_id"); CREATE INDEX "#__contentitem_tag_map_idx_core_content_id" ON "#__contentitem_tag_map" ("core_content_id"); +CREATE INDEX "#__contentitem_idx_alias_item_id" ON "#__contentitem_tag_map" ("type_alias","content_item_id"); COMMENT ON COLUMN "#__contentitem_tag_map"."core_content_id" IS 'PK from the core content table'; COMMENT ON COLUMN "#__contentitem_tag_map"."content_item_id" IS 'PK from the content type table'; @@ -467,6 +468,7 @@ CREATE TABLE "#__extensions" ( CREATE INDEX "#__extensions_element_clientid" ON "#__extensions" ("element", "client_id"); CREATE INDEX "#__extensions_element_folder_clientid" ON "#__extensions" ("element", "folder", "client_id"); CREATE INDEX "#__extensions_extension" ON "#__extensions" ("type", "element", "folder", "client_id"); +CREATE INDEX "#__extensions_idx_type_ordering" ON "#__extensions" ("type","ordering"); -- Components INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "custom_data", "system_data", "checked_out", "checked_out_time", "ordering", "state") VALUES @@ -1132,6 +1134,7 @@ CREATE TABLE "#__languages" ( ); CREATE INDEX "#__languages_idx_ordering" ON "#__languages" ("ordering"); CREATE INDEX "#__languages_idx_access" ON "#__languages" ("access"); +CREATE INDEX "#__languages_idx_published_ordering" ON "#__languages" ("published","ordering"); -- -- Dumping data for table #__languages @@ -1178,6 +1181,7 @@ CREATE INDEX "#__menu_idx_left_right" ON "#__menu" ("lft", "rgt"); CREATE INDEX "#__menu_idx_alias" ON "#__menu" ("alias"); CREATE INDEX "#__menu_idx_path" ON "#__menu" ("path"); CREATE INDEX "#__menu_idx_language" ON "#__menu" ("language"); +CREATE INDEX "#__menu_idx_client_id_published_lft" ON "#__menu" ("client_id","published","lft"); COMMENT ON COLUMN "#__menu"."menutype" IS 'The type of menu this item belongs to. FK to #__menu_types.menutype'; COMMENT ON COLUMN "#__menu"."title" IS 'The display title of the menu item.'; @@ -1561,6 +1565,7 @@ CREATE TABLE "#__template_styles" ( ); CREATE INDEX "#__template_styles_idx_template" ON "#__template_styles" ("template"); CREATE INDEX "#__template_styles_idx_home" ON "#__template_styles" ("home"); +CREATE INDEX "#__template_styles_idx_client_id" ON "#__template_styles" ("client_id"); -- -- Dumping data for table #__template_styles @@ -1884,6 +1889,7 @@ CREATE TABLE "#__viewlevels" ( COMMENT ON COLUMN "#__viewlevels"."id" IS 'Primary Key'; COMMENT ON COLUMN "#__viewlevels"."rules" IS 'JSON encoded access control.'; +CREATE INDEX "#__viewlevels_idx_ordering_title" ON "#__viewlevels" ("ordering","title"); -- -- Dumping data for table #__viewlevels diff --git a/installation/sql/sqlazure/joomla.sql b/installation/sql/sqlazure/joomla.sql index c4ec5708033fc..fa31979e5a332 100644 --- a/installation/sql/sqlazure/joomla.sql +++ b/installation/sql/sqlazure/joomla.sql @@ -684,6 +684,12 @@ CREATE NONCLUSTERED INDEX [idx_core_content_id] ON [#__contentitem_tag_map] [core_content_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); +CREATE NONCLUSTERED INDEX [idx_alias_item_id] ON [#__contentitem_tag_map] +( + [type_alias] ASC, + [content_item_id] ASC +)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + /****** Object: Table [#__core_log_searches] ******/ SET QUOTED_IDENTIFIER ON; @@ -740,6 +746,12 @@ CREATE NONCLUSTERED INDEX [extension] ON [#__extensions] [client_id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); +CREATE NONCLUSTERED INDEX [idx_type_ordering] ON [#__extensions] +( + [type] ASC, + [ordering] ASC +)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + SET IDENTITY_INSERT [#__extensions] ON; INSERT [#__extensions] ([extension_id], [name], [type], [element], [folder], [client_id], [enabled], [access], [protected], [manifest_cache], [params], [custom_data], [system_data], [checked_out], [checked_out_time], [ordering], [state]) @@ -1876,6 +1888,13 @@ CREATE UNIQUE INDEX [idx_access] ON [#__languages] [access] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); +CREATE NONCLUSTERED INDEX [idx_published_ordering] ON [#__languages] +( + [published] ASC, + [ordering] ASC +) +WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + SET IDENTITY_INSERT [#__languages] ON; INSERT INTO [#__languages] ([lang_id], [lang_code], [title], [title_native], [sef], [image], [description], [metakey], [metadesc], [sitename], [published], [access], [ordering]) @@ -1972,6 +1991,13 @@ CREATE NONCLUSTERED INDEX [idx_img] ON [#__menu] [img] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); +CREATE NONCLUSTERED INDEX [idx_client_id_published_lft] ON [#__menu] +( + [client_id] ASC, + [published] ASC, + [lft] ASC +)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + SET IDENTITY_INSERT [#__menu] ON; INSERT INTO [#__menu] ([id], [menutype], [title], [alias], [note], [path], [link], [type], [published], [parent_id], [level], [component_id], [checked_out], [checked_out_time], [browserNav], [access], [img], [template_style_id], [params], [lft], [rgt], [home], [language], [client_id]) @@ -2510,6 +2536,12 @@ CREATE NONCLUSTERED INDEX [idx_template] ON [#__template_styles] [template] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); +CREATE NONCLUSTERED INDEX [idx_client_id] ON [#__template_styles] +( + [client_id] ASC, +) +WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + SET IDENTITY_INSERT [#__template_styles] ON; INSERT [#__template_styles] ([id], [template], [client_id], [home], [title], [params]) @@ -2988,6 +3020,13 @@ CREATE TABLE [#__viewlevels]( )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]; +CREATE NONCLUSTERED INDEX [idx_ordering_title] ON [#__viewlevels] +( + [ordering] ASC, + [title] ASC +) +WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF); + SET IDENTITY_INSERT [#__viewlevels] ON; INSERT INTO [#__viewlevels] ([id], [title], [ordering], [rules]) diff --git a/libraries/cms/application/site.php b/libraries/cms/application/site.php index dadadbf455904..8e214d59d7ee1 100644 --- a/libraries/cms/application/site.php +++ b/libraries/cms/application/site.php @@ -477,8 +477,7 @@ public function getTemplate($params = false) ->select('id, home, template, s.params') ->from('#__template_styles as s') ->where('s.client_id = 0') - ->where('e.enabled = 1') - ->join('LEFT', '#__extensions as e ON e.element=s.template AND e.type=' . $db->quote('template') . ' AND e.client_id=s.client_id'); + ->join('LEFT', '#__extensions as e ON e.element=s.template AND e.type=' . $db->quote('template') . ' AND e.client_id=0 AND e.enabled = 1'); $db->setQuery($query); $templates = $db->loadObjectList('id'); diff --git a/libraries/cms/helper/tags.php b/libraries/cms/helper/tags.php index 3fd6de12b5614..b9e17d948b250 100644 --- a/libraries/cms/helper/tags.php +++ b/libraries/cms/helper/tags.php @@ -417,7 +417,40 @@ public function getItemTags($contentType, $id, $getTagData = true) if ($getTagData) { - $query->select($db->quoteName('t') . '.*'); + $query->select( + array( + 'id', + 'parent_id', + 'lft', + 'rgt', + 'level', + 'path', + 'title', + 'alias', + 'note', + 'description', + 'published', + 'checked_out', + 'checked_out_time', + 'access', + 'params', + 'metadesc', + 'metakey', + 'metadata', + 'created_user_id', + 'created_time', + 'created_by_alias', + 'modified_user_id', + 'modified_time', + 'images', + 'urls', + 'hits', + 'language', + 'version', + 'publish_up', + 'publish_down' + ) + ); } $query->join('INNER', $db->quoteName('#__tags') . ' AS t ' . ' ON ' . $db->quoteName('m.tag_id') . ' = ' . $db->quoteName('t.id')); diff --git a/libraries/cms/html/access.php b/libraries/cms/html/access.php index a75e7d44f4631..cc22545ac6a24 100644 --- a/libraries/cms/html/access.php +++ b/libraries/cms/html/access.php @@ -42,11 +42,12 @@ public static function level($name, $selected, $attribs = '', $params = true, $i { $db = JFactory::getDbo(); $query = $db->getQuery(true) - ->select($db->quoteName('a.id', 'value') . ', ' . $db->quoteName('a.title', 'text')) - ->from($db->quoteName('#__viewlevels', 'a')) - ->group($db->quoteName(array('a.id', 'a.title', 'a.ordering'))) - ->order($db->quoteName('a.ordering') . ' ASC') - ->order($db->quoteName('title') . ' ASC'); + ->select('a.id AS value, a.title AS text') + ->from($db->qn('#__viewlevels', 'a')) + ->where($db->qn('a.ordering') . ' > -1') + ->where($db->qn('a.title') . ' != ""') + ->order($db->qn('a.ordering')) + ->order($db->qn('title')); // Get the options. $db->setQuery($query); diff --git a/libraries/joomla/language/helper.php b/libraries/joomla/language/helper.php index 60d82d3d6f8a4..676bcd6456e05 100644 --- a/libraries/joomla/language/helper.php +++ b/libraries/joomla/language/helper.php @@ -155,7 +155,23 @@ public static function getLanguages($key = 'default') { $db = JFactory::getDbo(); $query = $db->getQuery(true) - ->select('*') + ->select( + array( + 'lang_id', + 'lang_code', + 'title', + 'title_native', + 'sef', + 'image', + 'description', + 'metakey', + 'metadesc', + 'sitename', + 'published', + 'access', + 'ordering' + ) + ) ->from('#__languages') ->where('published=1') ->order('ordering ASC');