web-dev-qa-db-ja.com

SQLクエリで結果セットのバイトサイズを取得するにはどうすればよいですか?

MySQLでSQLクエリの結果のサイズをバイト単位で取得することは可能ですか?

例えば:

select * from sometable;

thsは10000行を返します。行は必要ありませんが、結果セットのサイズ(バイト単位)が必要です。出来ますか?

19
Raj
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 for enumsetは正確でない可能性があります。注意してください

18
ajreal

Angelinのソリューションに基づいて構築するには、データにnullが含まれている場合、各列に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
13
futilerebel

簡素化する :

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

あなたは各列にIFNULL()を追加する @ futilerebelが述べたように

11
Angelin Nadar

CHAR_LENGTH()は、Unicodeがより多くのバイトになる場合、文字数を取得します-バイト数にはLENGTH()を使用します: https://dev.mysql.com/doc/refman/5.0 /en/string-functions.html#function_length

5
GrahamB