000-CMS
avatar evolvens
evolvens
24 Aug 2013

When you open the main page with type "category blog", there are query without limits, which runs through all the records in table of com_content (_content), which creates high load on the database.

If set type of main page menu item as "Blog of category" it generate SQL querry without limits.

File: \components\com_content\models\articles.php

Function: function getListQuery()

Example of querry:
Query_time: 60.808180
Lock_time: 0.000460
Rows_sent: 46159
Rows_examined: 1245897

SET timestamp=1376672974;
SELECT a.id, a.title, a.alias, a.title_alias, a.introtext, a.checked_out, a.checked_out_time, a.catid, a.created, a.created_by, a.created_by_alias, CASE WHEN a.modified = 0 THEN a.created ELSE a.modified END as modified, a.modified_by, uam.name as modified_by_name,CASE WHEN a.publish_up = 0 THEN a.created ELSE a.publish_up END as publish_up,a.publish_down, a.images, a.urls, a.attribs, a.metadata, a.metakey, a.metadesc, a.access, a.hits, a.xreference, a.featured, LENGTH(a.fulltext) AS readmore,CASE WHEN badcats.id is not null THEN 0 ELSE a.state END AS state,c.title AS category_title, c.path AS category_route, c.access AS category_access, c.alias AS category_alias,CASE WHEN a.created_by_alias > ' ' THEN a.created_by_alias ELSE ua.name END AS author,ua.email AS author_email,(
SELECT MAX(contact.id) AS id
FROM qitw0_contact_details AS contact
WHERE contact.published = 1 AND contact.user_id = a.created_by) as contactid,parent.title as parent_title, parent.id as parent_id, parent.path as parent_route, parent.alias as parent_alias,ROUND(v.rating_sum / v.rating_count, 0) AS rating, v.rating_count as rating_count,c.published, CASE WHEN badcats.id is null THEN c.published ELSE 0 END AS parents_published
FROM qitw0_content AS a
LEFT JOIN qitw0_content_frontpage AS fp ON fp.content_id = a.id
LEFT JOIN qitw0_categories AS c ON c.id = a.catid
LEFT JOIN qitw0_users AS ua ON ua.id = a.created_by
LEFT JOIN qitw0_users AS uam ON uam.id = a.modified_by
LEFT JOIN qitw0_categories as parent ON parent.id = c.parent_id
LEFT JOIN qitw0_content_rating AS v ON a.id = v.content_id
LEFT OUTER JOIN (SELECT cat.id as id FROM qitw0_categories AS cat JOIN qitw0_categories AS parent ON cat.lft BETWEEN parent.lft AND parent.rgt WHERE parent.extension = 'com_content' AND parent.published != 1 GROUP BY cat.id ) AS badcats ON badcats.id = c.id
WHERE a.access IN (1,1) AND c.access IN (1,1) AND CASE WHEN badcats.id is null THEN a.state ELSE 0 END = 1 AND (a.catid = 18 OR a.catid IN (
SELECT sub.id
FROM qitw0_categories as sub
INNER JOIN qitw0_categories as this ON sub.lft > this.lft AND sub.rgt < this.rgt
WHERE this.id = 18 AND sub.level <= this.level + 1)) AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2013-08-16 17:07:51') AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2013-08-16 17:07:51')
ORDER BY CASE WHEN a.publish_up = 0 THEN a.created ELSE a.publish_up END DESC , a.created;

Type: "category blog"
In Category options: Subcategory Levels - 1

In Blog Layout Options:
Leading Articles - 0
Intro Articles - 16
Columns - 2
Links 5
Include Subcategories - 1

I have database with ~46 000 of Articles after export from old CMS (there are news portal), 95% of articles in 1 category and 7 sub categories.

If item type not main page there are correct query with limits.

avatar joomla-ua joomla-ua - open - 24 Aug 2013
avatar joomla-ua joomla-ua - open - 24 Aug 2013
avatar mbabker
mbabker - comment - 24 Aug 2013

This repository is for the Joomla! Issue Tracker application. Your issue pertains to the Joomla! CMS, please report your issue at https://github.com/joomla/joomla-cms/issues/new

avatar - close - 24 Aug 2013
avatar mbabker mbabker - close - 24 Aug 2013

Add a Comment

Login with GitHub to post a comment