Можно ли получить размер в байтах результатов sql-запроса в MySQL?
Например:
select * from sometable;
ths возвращает 10000 строк. Мне нужны не строки, а размер набора результатов в байтах. Является ли это возможным?
Можно ли получить размер в байтах результатов sql-запроса в MySQL?
Например:
select * from sometable;
ths возвращает 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;
char_length
для enum
, set
может быть неточным, обратите внимание
enum
и set
неверны, как насчет других типов? Например, int
можно представить как строку длиной от 1 до 10, но в MySQL она всегда занимает 4 байта. Кроме того, следуя этому аргументу, можно ли предположить, что для достаточно больших наборов данных char_length
всегда будет завышать общий размер?
- person iloo; 16.01.2017
Чтобы использовать решение Анджелина, если ваши данные содержат нули, вам нужно добавить 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
упростить :
select sum(char_length(column1)+
char_length(column2)+
char_length(column3)+
char_length(column4) ... )<-- repeat for all columns
from your_table
Вам нужно добавить IFNULL() в каждый столбец, как упомянул @futilerebel
CHAR_LENGTH()
получает количество символов, если unicode будет больше байтов - используйте LENGTH()
для количества байтов: https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_length