2009/11/08

索引張っていても遅くない

RDBのテーブルにデータを挿入するとき、索引があると、索引の更新にコストが生じて遅くなる。
大量に挿入するとき、索引を外すのが良いとされます。
でも、どれくらい遅くなるのが資料がありません。

気になっていたので、確認してみました。(SQL Server 2008 + Win7 Memory 3.2G)

テストしたテーブルは

CREATE TABLE 市索引付
(
県ID VARCHAR(2) NOT NULL,
市ID VARCHAR(3) NOT NULL,
市名 NVARCHAR(64),
CONSTRAINT PK_CITY PRIMARY KEY (県ID, 市ID)
);
CREATE TABLE 市索引無
(
県ID VARCHAR(2) NOT NULL,
市ID VARCHAR(3) NOT NULL,
市名 NVARCHAR(64)
);
で、データは3363件用意しました。数回試行した結果は

索引付: laptime [00:00:10.3907784]秒
索引無: laptime [00:00:10.4113862]秒

誤差を考えると、差はないとみていいでしょう。索引に対して、SQLサーバーの最適化が進んでいると言えそうですね。
3363件で約10秒なので、1件あたり0.003秒となり、妥当な数字だと判断しています。

「xxxすると遅くなる」というのは多々聞きますが、確認しないで、鵜呑みするのは危険そうですね。

複数の索引をはっていたりすると、差がでるのでしょうね。

0 件のコメント:

コメントを投稿