- Модуль: 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;
}