0

キーと値のペアを格納するためのテーブルが必要です (Windows レジストリなど)。ここに私が持っているものがあります:

CREATE TABLE REG         
(                       
    ID VARCHAR(255) NOT NULL,
    DATA VARCHAR(1024),  
    PRIMARY KEY(ID)          
);                       

SQL Server 2008 R2、2008、および 2005 を使用しています。

キーと値のペアを保存するためのより効率的なアイデアを誰でも提供できますか。

私は次のようにキーを保存しています:

/USER/REX/AUTO_LOGIN = "T"

/USER/REX/MESSAGE/1 = "これは長いメッセージです"

約 10000 レコードで、すでにパフォーマンスの問題が発生しています。

4

2 に答える 2

2

キー名のハッシュである追加の列を導入できます。たとえば、「/USER/REX/AUTO_LOGIN」は 102454 にハッシュされる可能性があります。次に、ハッシュ列にインデックス (またはハッシュ列とキー名列の複合インデックス) を追加し、クエリの where 句に含めることができます。例えば

SELECT DATA
FROM REG
WHERE HASH = 102454 and ID = '/USER/REX/AUTO_LOGIN'

列の検索は、int列のクエリよりもはるかに効率的でvarchar IDあり、同じハッシュ値を持ついくつかの行に絞り込む効果があり、一致するID値について検査されます。

于 2012-04-27T16:33:26.107 に答える
1

varchar(255)代わりに一意のインデックスを選択して、主キーとして使用することを避けます。

CREATE TABLE REG (
    id bigint identity not null,
    key VARCHAR(256) NOT NULL,
    DATA VARCHAR(1024),
    PRIMARY KEY(ID)
);

create unique index reg_key on REG(key);
于 2012-04-27T16:34:29.010 に答える