Я пытаюсь найти размер в MB моего запроса, но я не понимаю, как это сделать. Я хотел бы получить размер моего запроса таким образом:
SELECT size_query FROM my_query
Где "my_query" это может быть: SELECT * FROM MyTable WHERE idFactory = 1
Если я правильно понял ваш вопрос, ajreal уже предоставил решение по qaru.site/questions/428593/.... Цитируется:
select sum(row_size) from ( select char_length(column1)+ char_length(column2)+ char_length(column3)+ char_length(column4) ... <-- repeat for all columns as row_size from your_table ) as tbl1;
Это даст вам размер вашего запроса в байтах, разделите его на 1024 для килобайт и снова для мегабайт.
Изменить: если вы все равно вернете полный результат на PHP и хотите узнать его размер, вы можете рассчитать его на PHP, используя что-то вроде этого:
<?php
$data = [
[
'item' => 'Apple',
'type' => 'fruit',
'in_stock' => true
],
[
'item' => 'Biscuits',
'type' => 'confectionery',
'in_stock' => false
],
[
'item' => 'Milk',
'type' => 'dairy',
'in_stock' => true
],
];
function get_array_size(&$array)
{
$size = 0;
foreach ($array as $key => $value) {
if (is_array($value)) {
$size += get_array_size($value);
} else if (is_string($value)) {
$size += strlen($value);
} else if (is_bool($value)) {
$size += 1;
} /* else if ( some other type ) {
} */
}
return $size;
}
echo get_array_size($data); // Outputs 43
Это может быть или не быть приемлемым для вас в зависимости от вашего варианта использования. Если вы хотите измерить физические байты на проводе, это, вероятно, будет недостаточно точным.