我有一些查询似乎返回了大量数据,但我想知道多少。
如果没有序列化数据并将其转储到文件中,有没有办法以编程方式选择查询响应的字节大小?
答案 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)
的列的值为空