如何从mysql查询中计算大小?

pgccezyw  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(360)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

两年前关门了。
改进这个问题
我试图找到我的查询的大小(mb),但我不知道怎么做。我想这样提取查询的大小:

SELECT size_query FROM my_query

“我的查询”可能在哪里: SELECT * FROM MyTable WHERE idFactory = 1

cwdobuhd

cwdobuhd1#

如果我对你的问题理解正确的话,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

这取决于您的用例,您可能接受,也可能不接受。如果要测量导线上的物理字节,这可能不够精确。

相关问题