限定しりとり

いつもお世話になっております。

インデックスを貼るときに主キーのようにまとめて
設定することができますよね。

CREATE INDEX Idx原価 ON T原価 (商品名,発注番号);

上記のようにまとめて設定するのと

CREATE INDEX Idx原価_商品名 ON T原価 (商品名);
CREATE INDEX Idx原価_発注番号 ON T原価 (発注番号);

このように2つに分けて貼るのでは意味は違ってくるのでしょうか?

商品名と発注番号の検索が別々に行われる場合は
分けて作成したら良いのでしょうか?

A 回答 (2件)

意味は違ってきます。



商品名と発注番号の検索が別々に行われる場合は分けて作成したら良いです。
    • good
    • 0

困り度3の割には反応が無いですね。




意味は違ってきます。
商品別に複数の発注番号を参照する場合に使用しますから、
where 商品名='○○' and 発注番号 between 12345 and 23456
みたいな使い方の場合に有効。

where 発注番号 between 12345 and 23456
みたいな検索では、商品名の絞り込みが効かないので総スキャンが発生。

発注番号あたりに複数の商品があるなら
CREATE INDEX Idx原価2 ON T原価 (発注番号,商品名);
か、とは思うが、発注番号あたりに何千何万の商品がないならばこのようなINDEXは普通作りません。
CREATE INDEX Idx原価_発注番号 ON T原価 (発注番号);
で充分でしょう。


where 商品名='○○'
where 発注番号=12345
のような検索が行われるなら、
CREATE INDEX Idx原価_商品名 ON T原価 (商品名);
CREATE INDEX Idx原価_発注番号 ON T原価 (発注番号);
が有効です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す