I have 101 or so records that this query fetches and sorts into a table. Everytime the query executes, it takes around 6-7 seconds to parse on screen. What could be the cause of this slowdown?
echo "<table width='100%' border='0' cellspacing='1' cellpadding='4'>";
$columnspan = PBK_AS_MD_SHOWSTAFFIN + PBK_AS_MD_SHOWSTAFFOUT + PBK_AS_MD_SHOWPHONE + PBK_AS_MD_SHOWFAX + PBK_AS_MD_SHOWMAIL + PBK_AS_MD_SHOWWEBSITE + PBK_AS_MD_SHOWLOCATION + PBK_AS_MD_SHOWSTATUS + _PBK_AS_MD_SHOWAGE + 2;
$database->setQuery( "SELECT c.*, COUNT(DISTINCT s1.id) AS num"
. "\nFROM #categories AS c"
. "\nLEFT JOIN #peoplebook AS s1 ON s1.catid = c.id"
. "\nWHERE c.section='com_peoplebook' AND c.published='1'"
. "\nGROUP BY c.id"
. "\nORDER BY c.ordering, c.name"
);
$rows = $database->loadObjectList();
foreach($rows as $row1) {
if ($row1->num > 0) {
$line=1;
if ( isset($_GET['sort_field']) && $_GET['sort_field'] != '' ) {
$sort_field = $_GET['sort_field'];
$sort_order = $_GET['sort_order'];
}
else {
$sort_field = 'name';
$sort_order = 'ASC';
}
#Prepare Content
if( !isset($search) || $search == '' ) {
$database->setQuery("SELECT * FROM #__peoplebook WHERE published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order");
$srows = $database->loadObjectList();
}
else {
if ( !is_array($search) ) {
$search_cour = $search." AND published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order";
$database->setQuery($search_cour);
$srows = $database->loadObjectList();
}
else {
foreach ($search as $search_line) {
$search_cour = $search_line." AND published='1' AND catid='$row1->id' ORDER BY LOWER($sort_field) $sort_order";
$database->setQuery($search_cour);
$srows += $database->loadObjectList();
}
}
}
if ( count($srows) > 0 ) {
$as_result = true;
echo "<tr><td> </td></tr>";
echo "<tr><td colspan=$columnspan><b>$row1->title</b><br /><font class='small'>$row1->description</font></td></tr>";
echo $tab_header;
}
foreach($srows as $srow1) {
$linecolor = ($line % 2) + 1;
# Choose name and nick display
if (_PBK_AS_MD_SHOWNICK=="1") {
$asd_name = "$srow1->nick";
} elseif (_PBK_AS_MD_SHOWNICK=="2") {
$asd_name = "$srow1->name ($srow1->nick)";
} elseif (_PBK_AS_MD_SHOWNICK=="3") {
$asd_name = "$srow1->nick ($srow1->name)";
} else {
$asd_name = "$srow1->name";
}
# Check list format and display things
echo "<tr class='sectiontableentry".$linecolor."'>";
echo "<td valign='top'>";