- PR -

列の位置について

1
投稿者投稿内容
7年目
常連さん
会議室デビュー日: 2005/04/28
投稿数: 21
投稿日時: 2008-06-30 09:37
ある1テーブルに対する検索が遅くて悩んでいます。

その1テーブルは
・列数133です。
・PKは列1と列2でPKとなります。
・レコード数は300万件
・PK以外のIndexは作成なし

遅いのが、11番目の列を検索条件としているSQLです。
11番目の列のみ完全一致で検索をしています。

処理の都合上、PKでの検索はできません。

また、11番目の列にインデックスをはればいいというのもあるのですが、
そのテーブルは、
頻繁にInsertされるのと、Insertされるレコードの11番目の列の値は、
番号順にInsertされるわけでもなく、設定される値はばらばらです。
また、その設定される値は300万件中250万種類ほどあります。
つまり一部は重複した値です。

ほかに上記と似た構成のテーブルがあるのですが、
検索対象としている列は3番目にあります。
そちらのテーブルに対する検索速度は、同じレコード数でも検索速度は速いです。

質問させていただきたいのは、
テーブルにIndexを設定していない場合、
検索対象となる列が、テーブルの前の方の列にあると、
速度は速くなるものなのでしょうか?

よろしくお願いいたします。
ほったて
ベテラン
会議室デビュー日: 2007/11/10
投稿数: 68
投稿日時: 2008-06-30 10:33
引用:

WEB初心者さんの書き込み (2008-06-30 09:37) より:
ある1テーブルに対する検索が遅くて悩んでいます。

その1テーブルは
・列数133です。
・PKは列1と列2でPKとなります。
・レコード数は300万件
・PK以外のIndexは作成なし

遅いのが、11番目の列を検索条件としているSQLです。
11番目の列のみ完全一致で検索をしています。

処理の都合上、PKでの検索はできません。

また、11番目の列にインデックスをはればいいというのもあるのですが、
そのテーブルは、
頻繁にInsertされるのと、Insertされるレコードの11番目の列の値は、
番号順にInsertされるわけでもなく、設定される値はばらばらです。
また、その設定される値は300万件中250万種類ほどあります。
つまり一部は重複した値です。

ほかに上記と似た構成のテーブルがあるのですが、
検索対象としている列は3番目にあります。
そちらのテーブルに対する検索速度は、同じレコード数でも検索速度は速いです。

質問させていただきたいのは、
テーブルにIndexを設定していない場合、
検索対象となる列が、テーブルの前の方の列にあると、
速度は速くなるものなのでしょうか?



索引つけるほうが早いかと。
insertされる値がばらばらであるという点についてはBtree索引ならむしろ好都合だし。
列の順とパフォーマンスは、データの取得をcsvから自力で取ってきてるのでもない限り関係しないでしょう。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2008-06-30 11:32
引用:

WEB初心者さんの書き込み (2008-06-30 09:37) より:
質問させていただきたいのは、
テーブルにIndexを設定していない場合、
検索対象となる列が、テーブルの前の方の列にあると、
速度は速くなるものなのでしょうか?



そんなことはありえない その前にデータベース系の質問は使用しているデータベース名 バージョン名を明記するように
7年目
常連さん
会議室デビュー日: 2005/04/28
投稿数: 21
投稿日時: 2008-06-30 14:04
ほったて さん、
七味唐辛子 さん、
回答ありがとうございます。

情報をきちんと書いていなくて申し訳ありませんでした。
一応、SQLServer2005でした。

参考になりました。ありがとうございます。

1

スキルアップ/キャリアアップ(JOB@IT)