• Модуль: perfmon
  • Путь к файлу: ~/bitrix/modules/perfmon/classes/general/query_stat.php
  • Класс: CPerfQueryStat
  • Вызов: CPerfQueryStat::_gather_stat
static function _gather_stat($table, $column, $value, $max_size = -1)
{
	global $DB;
	$table = trim($table, "`");
	$column = trim($column, "`");

	$arStat = CPerfQueryStat::GatherTableStat($table);
	if ($max_size < 0 || $arStat["TABLE_SIZE"] < $max_size)
	{
		$table = preg_replace("/[^A-Za-z0-9%_]+/i", "", $table);
		$column = preg_replace("/[^A-Za-z0-9%_]+/i", "", $column);

		if (isset($value))
			$rs = $DB->Query($d="
				select count(1) CNT
				from ".$DB->ForSQL($table)."
				where `".$DB->ForSQL($column)."` = '".$DB->ForSQL($value)."'
			");
		else
			$rs = $DB->Query($d="
				select count(distinct `".$DB->ForSQL($column)."`) CNT
				from ".$DB->ForSQL($table)."
			");

		if ($ar = $rs->Fetch())
		{
			$DB->Add("b_perf_tab_column_stat", array(
				"TABLE_NAME" => $table,
				"COLUMN_NAME" => $column,
				"TABLE_ROWS" => $arStat["TABLE_ROWS"],
				"COLUMN_ROWS" => $ar["CNT"],
				"VALUE" => isset($value)? $value: false,
			));
		}
		return true;
	}
	else
		return false;
}