如何在SQL查询中获取结果集的字节大小?

Raj*_*Raj 19 mysql sql rdbms

是否有可能在MySQL中获取sql查询结果的字节大小?

例如:

select * from sometable;
Run Code Online (Sandbox Code Playgroud)

这会返回10000行.我不希望行,但结果集的大小,以字节为单位.可能吗?

ajr*_*eal 19

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;
Run Code Online (Sandbox Code Playgroud)

char_length因为enum,set可能不准确,请注意


fut*_*bel 13

要构建Angelin的解决方案,如果您的数据包含空值,您需要将IFNULL添加到每列:

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
Run Code Online (Sandbox Code Playgroud)


Ang*_*dar 11

简化:

select sum(char_length(column1)+
    char_length(column2)+
    char_length(column3)+
    char_length(column4) ... )<-- repeat for all columns
   from your_table
Run Code Online (Sandbox Code Playgroud)

您需要在@futilerebel提到的每列中添加IFNULL()


小智 6

CHAR_LENGTH()如果unicode会更多字节,则获取字符数- LENGTH()用于字节数:https : //dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_length