🐈

MySQLで遊ぶ:沢山データを入れて重たいテーブルを生成

2021/12/18に公開

はじめに

重たいDBを作成したくなったので作成します。

材料

Tb:重たくなるテーブル
Tb_in_10000data:Tbに1万件データを書き込むプロシージャ

SQL

Tb

idnameを持つ。

create table Tb(
	id int auto_increment primary key,
	name char(16)
	);

Tb_in_10000data

delimiter $$
create procedure Tb_in_5000000data()
begin
  declare i int default 0;
  while i < 500000 do
    insert into Tb(name) values
    ( SUBSTRING( MD5(RAND()),1,10)),
    ( SUBSTRING( MD5(RAND()),1,10)),
    ( SUBSTRING( MD5(RAND()),1,10)),
    ( SUBSTRING( MD5(RAND()),1,10)),
    ( SUBSTRING( MD5(RAND()),1,10)),
    ( SUBSTRING( MD5(RAND()),1,10)),
    ( SUBSTRING( MD5(RAND()),1,10)),
    ( SUBSTRING( MD5(RAND()),1,10)),
    ( SUBSTRING( MD5(RAND()),1,10)),
    ( SUBSTRING( MD5(RAND()),1,10));
    set i = i + 1;
  end while;
end $$
delimiter ;

実行

call Tb_in_5000000data();

MacBookProで実行したところ、1時間以上かかるので気をつけてください。

重たいか確認

select * from Tb where name LIKE "%bbbbbb%";
+---------+------------+
| id      | name       |
+---------+------------+
|   93626 | bbbbbb41fc |
| 2847834 | bbbbbb41fc |
| 3867386 | bbbbbb41fc |
| 4354559 | 8ac1bbbbbb |
+---------+------------+
4 rows in set (2.24 sec)

検索するクエリで2秒ほどかかるようになりました。

Discussion