Post
by John_Philip » Thu Feb 16, 2012 6:37 pm
Hi,
After installing Jreviews and I have over 40,000 listings, my server shut down sometime because of heavy SQL queries,
despite of cache activation for joomla and jreviews (query & views).
We found the SQL code which cause overload:
***** Manual signatures are NOT allowed *****__
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.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,contact.id 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 ) 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 pre_content AS a
LEFT JOIN pre_content_frontpage AS fp
ON fp.content_id = a.id
LEFT JOIN pre_categories AS c
ON c.id = a.catid
LEFT JOIN pre_users AS ua
ON ua.id = a.created_by
LEFT JOIN pre_users AS uam
ON uam.id = a.modified_by
LEFT JOIN pre_contact_details AS contact
on contact.user_id = a.created_by
LEFT JOIN pre_categories as parent
ON parent.id = c.parent_id
LEFT JOIN pre_content_rating AS v
ON a.id = v.content_id
LEFT
OUTER JOIN (SELECT cat.id as id
FROM pre_categories AS cat JOIN pre_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,2)
AND CASE WHEN badcats.id is null THEN a.state ELSE 0 END = 1
AND a.catid IN (11)
AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2012-02-15 15:42:21')
AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2012-02-15 15:42:21')
GROUP BY a.id
ORDER BY a.title ASC
***** Manual signatures are NOT allowed *****__
This request is lauched on each pages even if there is no reviews or listings to display!
Is it a setting question, a bug or anything else?
Thank you for your time.