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 件のコメント:
コメントを投稿