一尘不染

如何从我的查询MySQL计算大小?

sql

我试图以MB为单位查找查询的大小,但是我不知道该怎么做。我想以这种方式提取查询的大小:

SELECT size_query FROM my_query

其中“ my_query”可能是: SELECT * FROM MyTable WHERE idFactory = 1


阅读 144

收藏
2021-05-16

共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

根据您的用例,这可能会接受也可能不会被您接受。如果您要测量线路上的物理字节,这可能不够准确。

2021-05-16