我试图以MB为单位查找查询的大小,但是我不知道该怎么做。我想以这种方式提取查询的大小:
SELECT size_query FROM my_query
其中“ my_query”可能是: SELECT * FROM MyTable WHERE idFactory = 1
SELECT * FROM MyTable WHERE idFactory = 1
如果我正确理解了您的问题,那么ajreal已经提供了有关此问题的解决方案引:
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
根据您的用例,这可能会接受也可能不会被您接受。如果您要测量线路上的物理字节,这可能不够准确。