在MySQL中,是否有可能获取SQL查询结果的字节大小?
比如:
select * from sometable;
这个查询返回了10000行数据。我不想要这些行,而是想知道结果集的大小(以字节为单位)。这是否可能实现?
在MySQL中,是否有可能获取SQL查询结果的字节大小?
比如:
select * from sometable;
这个查询返回了10000行数据。我不想要这些行,而是想知道结果集的大小(以字节为单位)。这是否可能实现?
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;
enum
和set
的char_length
可能不准确,请注意。
enum
和set
不准确,那其他类型呢?例如,int
可以表示为长度从1到10不等的字符串,但在MySQL中它始终占用4个字节。此外,根据这个论点,可以假设对于足够大的数据集,char_length
总是会高估总大小吗? - ilooselect 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
简化:
select sum(char_length(column1)+
char_length(column2)+
char_length(column3)+
char_length(column4) ... )<-- repeat for all columns
from your_table
正如@futilerebel所提到的那样,您需要对每个列添加IFNULL()函数
CHAR_LENGTH()
函数获取字符数,如果Unicode更多字节,则使用LENGTH()
函数获取字节数:https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_length