Как получить размер байта набора результатов в запросе SQL? - PullRequest
18 голосов
/ 24 декабря 2010

Можно ли получить размер в байтах результатов SQL-запроса в MySQL?

Например:

select * from sometable;

тыс. Возвращает 10000 строк.Я не хочу строки, но размер результирующего набора в байтах.Возможно ли это?

Ответы [ 4 ]

18 голосов
/ 24 декабря 2010
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 может быть неточным, обратите внимание

13 голосов
/ 16 мая 2014

Чтобы построить решение 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
11 голосов
/ 24 декабря 2010

упрощение:

select sum(char_length(column1)+
    char_length(column2)+
    char_length(column3)+
    char_length(column4) ... )<-- repeat for all columns
   from your_table

Вам необходимо добавить IFNULL () в каждый столбец , как @futilerebel упомянул

5 голосов
/ 03 марта 2015

CHAR_LENGTH() получает количество символов, если Юникод будет больше байтов - используйте LENGTH() для количества байтов: https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_length

...