有没有办法计算MySQL查询响应的大小?

时间:2014-03-27 17:44:54

标签: mysql sql size response

我有一些查询似乎返回了大量数据,但我想知道多少。

如果没有序列化数据并将其转储到文件中,有没有办法以编程方式选择查询响应的字节大小?

2 个答案:

答案 0 :(得分:3)

要在数据库中100%执行此操作,您可以从查询结果中创建一个表:

 CREATE TABLE db_name.test_table SELECT a v1, b v2 FROM db_name.tbl2;

您希望结果大小的查询应替换为SELECT a v1, b v2 FROM db_name.tbl2

然后得到表格的大小

  SELECT round((data_length / 1024 / 1024), 2) "Size in MB" 
      FROM information_schema.TABLES 
    WHERE table_schema = "db_name" AND table_name = "test_table";

然后放下测试表:

 drop table db_name.test_table;

这只会为您提供原始数据大小,但不会产生任何额外的开销,例如数据包标头被转回(如果您的结果集被分解为多个数据包)。

甚至可能有一种聪明的方法可以使用临时表或在将查询传递给它的存储过程中执行此操作。

答案 1 :(得分:-1)

或者您可以在没有临时数据库的查询中执行以下操作:

select sum((row_size) / 1024 / 1024) AS `Size (MB)`
from (
  select 
    char_length(column1),
    char_length(column2),
    char_length(column3),
    char_length(column4)
  as row_size 
  from YourTable) AS tbl1

如果使用IsNull(column)的列的值为空