How to get the byte size of resultset in an SQL query?

后端 未结 4 501
囚心锁ツ
囚心锁ツ 2020-12-01 10:58

Is it possible to get the size in bytes of the results of an sql query in MySQL?

For example:

select * from sometable;

ths returns

相关标签:
4条回答
  • 2020-12-01 11:20

    CHAR_LENGTH() gets number of characters if unicode will be more bytes - use LENGTH() for number of bytes:https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_length

    0 讨论(0)
  • 2020-12-01 11:22

    simplify :

    select sum(char_length(column1)+
        char_length(column2)+
        char_length(column3)+
        char_length(column4) ... )<-- repeat for all columns
       from your_table
    

    You need to add IFNULL() to each column as @futilerebel has mentioned

    0 讨论(0)
  • 2020-12-01 11:23
    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;
    

    char_length for enum, set might not accurate, please take note

    0 讨论(0)
  • 2020-12-01 11:25

    To build on Angelin's solution, if your data contains nulls, you'll want to add IFNULL to each column:

    select sum(
        ifnull(char_length(column1), 0) +
        ifnull(char_length(column2), 0) +
        ifnull(char_length(column3), 0) +
        ifnull(char_length(column4), 0) ... <-- repeat for all columns
    )
    from your_table
    
    0 讨论(0)
提交回复
热议问题