case "analyze_start": CPerfomanceIndexSuggest::Clear(); $last_id = 0; $go = true; $_SESSION["queries"] = 0; break; case "analyze_cont": $etime = time() + 5; $last_id = intval($_REQUEST["last_id"]); $sql_cache = array(); while (time() < $etime) { $rsSQL = CPerfomanceSQL::GetList(array("ID", "SQL_TEXT", "QUERY_TIME"), array(">ID" => $last_id), array("ID" => "ASC"), false, array("nTopCount" => 100)); while ($arSQL = $rsSQL->Fetch()) { $_SESSION["queries"]++; $go = true; $sql_md5 = md5(CPerfQuery::remove_literals($arSQL["SQL_TEXT"])); //Check if did it already on previous steps if (!array_key_exists($sql_md5, $sql_cache)) { $sql_cache[$sql_md5] = true; $rsInd = CPerfomanceIndexSuggest::GetList(array("SQL_MD5"), array("=SQL_MD5" => $sql_md5), array()); if ($rsInd->Fetch()) { CPerfomanceIndexSuggest::UpdateStat($sql_md5, 1, $arSQL["QUERY_TIME"], $arSQL["ID"]); } else { $arMissedKeys = array(); $q = new CPerfQuery(); $strSQL = $q->transform2select($arSQL["SQL_TEXT"]); if ($strSQL && $q->parse($strSQL)) { $i = 0; $arExplain = array(); $rsData = $DB->Query("explain " . $strSQL, true); if (is_object($rsData)) {