データベース:主キーが文字列の場合IDを振るべき?
テーブルの主キーが文字列の場合、
その主キーの文字列を通し番号に置き換えて、
その文字列は別テーブルに移したほうが検索が速いですか?
例えば、テーブルが
CREATE TABLE spec (
test_name VARCHAR(40) NOT NULL,
upper_limit NUMERIC(17,7),
lower_limit NUMERIC(17,7),
PRIMARY KEY(test_name)
);
で、40文字という長いテスト項目名の場合、
CREATE TABLE spec (
test_id INTEGER NOT NULL,
upper_limit NUMERIC(17,7),
lower_limit NUMERIC(17,7),
PRIMARY KEY(test_id)
);
と
CREATE TABLE test (
test_id INTEGER NOT NULL,
test_name VARCHAR(40) NOT NULL,
PRIMARY KEY(test_id)
);
という二つのテーブルに分けたほうが検索は速くなりますか?
(もちろん、結合する時間も含めてです。)
もし速くなるとしても、文字数が3文字など少ない場合は
通し番号に置き換えてもきっと効果は薄いですよね?
何文字以上の文字列なら通し番号に置き換えたほうが速いですか?
皆さんはどのように決めていますか?
お礼
ありがとうございます。たしかに全件検索よりは早くなると思います。 ただ、主キーすれば何件でもOKという考え方が正しいのか疑問に思っていました。