1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
index_suggest.php
См. документацию.
1<?php
2
4{
5 public static function GetList($arSelect, $arFilter, $arOrder)
6 {
7 global $DB;
8
9 if (!is_array($arSelect))
10 {
11 $arSelect = [];
12 }
13 if (count($arSelect) < 1)
14 {
15 $arSelect = [
16 'ID',
17 ];
18 }
19
20 if (!is_array($arOrder))
21 {
22 $arOrder = [];
23 }
24 if (count($arOrder) < 1)
25 {
26 $arOrder = [
27 'TABLE_NAME' => 'ASC',
28 ];
29 }
30
31 $arQueryOrder = [];
32 foreach ($arOrder as $strColumn => $strDirection)
33 {
34 $strColumn = mb_strtoupper($strColumn);
35 $strDirection = mb_strtoupper($strDirection) === 'ASC' ? 'ASC' : 'DESC';
36 switch ($strColumn)
37 {
38 case 'ID':
39 case 'TABLE_NAME':
40 case 'SQL_COUNT':
41 case 'SQL_TIME':
42 $arSelect[] = $strColumn;
43 $arQueryOrder[$strColumn] = $strColumn . ' ' . $strDirection;
44 break;
45 }
46 }
47
48 $bJoin = false;
49 $arQuerySelect = [];
50 foreach ($arSelect as $strColumn)
51 {
52 $strColumn = mb_strtoupper($strColumn);
53 switch ($strColumn)
54 {
55 case 'ID':
56 case 'TABLE_NAME':
57 case 'TABLE_ALIAS':
58 case 'COLUMN_NAMES':
59 case 'SQL_MD5':
60 case 'SQL_TEXT':
61 case 'SQL_COUNT':
62 case 'SQL_TIME':
63 case 'SQL_EXPLAIN':
64 $arQuerySelect[$strColumn] = 's.' . $strColumn;
65 break;
66 case 'BANNED':
67 $arQuerySelect[$strColumn] = 'c.' . $strColumn;
68 $bJoin = true;
69 break;
70 }
71 }
72
73 $obQueryWhere = new CSQLWhere;
74 $obQueryWhere->SetFields([
75 'ID' => [
76 'TABLE_ALIAS' => 's',
77 'FIELD_NAME' => 'ID',
78 'FIELD_TYPE' => 'int', //int, double, file, enum, int, string, date, datetime
79 'JOIN' => false,
80 //"LEFT_JOIN" => "lt",
81 ],
82 'SQL_MD5' => [
83 'TABLE_ALIAS' => 's',
84 'FIELD_NAME' => 's.SQL_MD5',
85 'FIELD_TYPE' => 'string',
86 'JOIN' => false,
87 ],
88 'TABLE_NAME' => [
89 'TABLE_ALIAS' => 's',
90 'FIELD_NAME' => 's.TABLE_NAME',
91 'FIELD_TYPE' => 'string',
92 'JOIN' => false,
93 ],
94 'COLUMN_NAMES' => [
95 'TABLE_ALIAS' => 's',
96 'FIELD_NAME' => 's.COLUMN_NAMES',
97 'FIELD_TYPE' => 'string',
98 'JOIN' => false,
99 ],
100 'BANNED' => [
101 'TABLE_ALIAS' => 'c1',
102 'FIELD_NAME' => 'c1.BANNED',
103 'FIELD_TYPE' => 'string',
104 'JOIN' => 'LEFT JOIN b_perf_index_complete c1 on c1.TABLE_NAME = s.TABLE_NAME and c1.COLUMN_NAMES = s.COLUMN_NAMES',
105 ],
106 ]);
107
108 if (count($arQuerySelect) < 1)
109 {
110 $arQuerySelect = ['ID' => 's.ID'];
111 }
112
113 if (!is_array($arFilter))
114 {
115 $arFilter = [];
116 }
117 $strQueryWhere = $obQueryWhere->GetQuery($arFilter);
118
119 $strSql = '
120 SELECT ' . implode(', ', $arQuerySelect) . '
121 FROM b_perf_index_suggest s
122 ' . $obQueryWhere->GetJoins() . '
123 ' . ($bJoin ? 'LEFT JOIN b_perf_index_complete c on c.TABLE_NAME = s.TABLE_NAME and c.COLUMN_NAMES = s.COLUMN_NAMES' : '') . '
124 ' . ($strQueryWhere ? 'WHERE ' . $strQueryWhere : '') . '
125 ' . (count($arQueryOrder) ? 'ORDER BY ' . implode(', ', $arQueryOrder) : '') . '
126 ';
127 $res = $DB->Query($strSql);
128
129 return $res;
130 }
131
132 public static function Add($arFields)
133 {
134 global $DB;
135 $ID = $DB->Add('b_perf_index_suggest', $arFields);
136 return $ID;
137 }
138
139 public static function Delete($ID)
140 {
141 global $DB;
142 $ID = intval($ID);
143 $DB->Query('DELETE FROM b_perf_index_suggest_sql WHERE SUGGEST_ID = ' . $ID);
144 $DB->Query('DELETE FROM b_perf_index_suggest WHERE ID = ' . $ID);
145 }
146
147 public static function UpdateStat($sql_md5, $count, $query_time, $sql_id)
148 {
149 global $DB;
150 $res = $DB->Query("
151 INSERT INTO b_perf_index_suggest_sql (
152 SUGGEST_ID, SQL_ID
153 ) SELECT iss.ID,s.ID
154 FROM b_perf_index_suggest iss
155 ,b_perf_sql s
156 WHERE iss.SQL_MD5 = '" . $DB->ForSql($sql_md5) . "'
157 AND s.ID = " . intval($sql_id) . '
158 ');
159 if (is_object($res))
160 {
161 $DB->Query('
162 UPDATE b_perf_index_suggest
163 SET SQL_COUNT = SQL_COUNT + ' . intval($count) . ',
164 SQL_TIME = SQL_TIME + ' . floatval($query_time) . "
165 WHERE SQL_MD5 = '" . $DB->ForSql($sql_md5) . "'
166 ");
167 }
168 }
169
170 public static function Clear()
171 {
172 global $DB;
173 $DB->Query('TRUNCATE TABLE b_perf_tab_stat');
174 $DB->Query('TRUNCATE TABLE b_perf_tab_column_stat');
175 $DB->Query('TRUNCATE TABLE b_perf_index_suggest');
176 $DB->Query('TRUNCATE TABLE b_perf_index_suggest_sql');
177 }
178}
$count
Определения admin_tab.php:4
SetFields($arFields)
Определения sqlwhere.php:239
static UpdateStat($sql_md5, $count, $query_time, $sql_id)
Определения index_suggest.php:147
static Delete($ID)
Определения index_suggest.php:139
static Clear()
Определения index_suggest.php:170
static Add($arFields)
Определения index_suggest.php:132
static GetList($arSelect, $arFilter, $arOrder)
Определения index_suggest.php:5
Определения sqlwhere.php:1359
$arFields
Определения dblapprove.php:5
$res
Определения filter_act.php:7
if($ajaxMode) $ID
Определения get_user.php:27
global $DB
Определения cron_frame.php:29
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$arFilter
Определения user_search.php:106