2012年5月28日月曜日

Primary Keyがないテーブル

InnoDBでPrimary Keyを設定していないテーブルを作ると
おそろしくレスポンスが悪くなるという話だったので、試してみる。

CREATE TABLE t1 (num int not null,val varchar(50) not null);


用意したINSERT文。

INSERT INTO t1 VALUES (1,'1');
INSERT INTO t1 VALUES (2,'2');
...
INSERT INTO t1 VALUES (65535,'65535');


UPDATE文。
UPDATE t1 SET val = '....' WHERE num = 1;

...



DELETE文。
DELETE FROM t1 WHERE num = 1;
...


key全くなし。
INSERT 8sec、UPDATE 1hour34min17sec、DELETE 31min46sec。

PRIMARY KEY(num)
INSERT 9sec、UPDATE 15sec、DELETE 12sec。

UNIQUE KEY(num)
INSERT 9sec、UPDATE 11sec、DELETE 11sec。

KEY(num)
INSERT 9sec、UPDATE 12sec、DELETE 11sec。


ただのKEYとPRIMARY KEYで多少差が出てくれるかと思ってたけど、そうでもなかった。
件数増やしたら多少出るかしら。

あと、レプリケーション環境でPrimary Keyがないと悲惨なことになったりする場合もあるので、
やっぱりセオリー通りSERIALでも良いからPrimary Keyは付けましょうって感じで。
 ⇒Primary Keyがないテーブル その2

0 件のコメント :

コメントを投稿