投稿を読みました: How number of columns impact performance ? . 列の数によって挿入速度が劇的に遅くなるようです。そこで、2 つのテーブルを作成しました。最初のテーブルには 100 の tinyint 列と 100 の smallint 列があり、2 番目のテーブルには 1 つのバイナリ (100) 列と 1 つのバイナリ (200) 列があります。したがって、これら 2 つのテーブルの行の長さは同じです。
より具体的に:
CREATE TABLE 'users'(
'c0' tinyint(4) not null default '0',
'd0' smallint(6) not null default '0',
.....
'c99' tinyint(4) not null default '0',
'd99' smallint(6) not null default '0'
) ENGINE = InnoDB default CHARSET = utf8
CREATE TABLE 'users2'(
'c0' binary(100) not null default '\0 *100',
'd0' binary(200) not null default '\0 * 200'
) ENGINE = InnoDB default CHARSET = utf8
次に、mysql ワークベンチから次の 2 つの手順を実行しました。
create procedure insert1()
begin
declare v_max int default 1000;
declare v_counter int default 0;
while v_counter < v_max do
insert into user (c0, d0, c1, d1....c99, d99) values (0,0,0.....0);
set v_counter = v_counter + 1;
end while;
end
create procedure insert2()
begin
declare v_max int default 1000;
declare v_counter int default 0;
while v_counter < v_max do
insert into users2 (c0, d0) values (0x0000...00, 0x000....00);
set v_counter = v_counter + 1;
end while;
end
結果は次のとおりです。
insert1() の呼び出し: 0.999 秒
insert2() の呼び出し: 3.479 秒
これら 2 つのテーブルの行の長さは同じで、最初のテーブルにはより多くの列 (200 列) があるため、最初のテーブルの挿入速度は 2 番目のテーブルより遅くなるはずです。誰かがなぜこれが起こるのか説明できますか? 前もって感謝します!