0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

可変長文字列と固定長文字列の処理速度比較(Windows10+MySQL8.0)

Last updated at Posted at 2022-05-24

可変長と固定長の文字列データの処理速度を比べてみた

環境

windows10+MySQL8.0

前提

VARCHAR型

CHAR型と異なり、格納する文字列の長さの調整はされない。
VARCHAR(10):10バイト以下の文字列でも、それに合わせた領域が確保される。(※最大長以上(10バイト以上)の文字列の格納はできない。)

CHAR型

固定長の文字列データを扱うデータ型。
CHAR(10):格納される列は常に10バイトになる。
10バイトに満たない場合は文字列の右側に空白が追加され、10バイトぴったりに調整される。
記憶領域は比較して大きく取るがその代わり検索などの処理は比較的早くなる。
 

--テーブル作成、データ追加、全件検索
create table users (name varchar(10),age int);      --0.015sec
insert into users values('山田',21);                 --0.000sec
insert into users values('佐藤',36);                 --0.000sec
insert into users values('鈴木',30);                 --0.000sec
insert into users values('山本',18);                 --0.000sec
select * from users;                                --0.000sec

create table users_fix (name char(10),age int);    --0.032sec
insert into users_fix values('山田',21);            --0.016sec
insert into users_fix values('佐藤',36);            --0.000sec
insert into users_fix values('鈴木',30);            --0.016sec
insert into users_fix values('山本',18);            --0.000sec
select * from users_fix;                           --0.000sec

余り変化がなかったので、100万件のデータを作成して、CSVファイル(Book.csv)の形で追加して確認してみた

--読み込み速度(固定長文字列,可変長文字列)
load data local infile 'C:/Book.csv'
    into table test.users_fix
 fields
    terminated by ','
    enclosed by '\n'; 
    -- 2.797sec 
load data local infile 'C:/Book.csv'
    into table test.users_flex
 fields
    terminated by ','
    enclosed by '\n'; 
    -- 2.594sec

--固定長と可変長のSELECT文の処理時間比較
select count(*) from users_fix;
-- 0.031 sec
select count(*) from users_flex;    
-- 0.047 sec

結論

データが増えてくると実行時間に差が発生するのが確認できた。
固定長の方が可変長に比べて処理時間は短かった。
ただし、キャッシュ等の影響も考えられるので注意が必要。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?