• ベストアンサー

データベースの索引

oracle masterの問題関連で質問があります。 一般的にデータベースで CREATE INDEX myind ON mytbl(a,b,c) と索引を作成した場合に SELECT a FROM mytbl ORDER BY a; この場合myindの索引は使用されるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.5

#3です。 >ご指摘の通りorder byでは索引されないのですね。 私はそんなことはいっていませんよ。 参考URLはご覧になりましたか? こちらの「Order By句の使用」のところにも同様のことが書かれています。 http://www.int21.co.jp/pcdn/oracle/article/optimizer.html 「Order By句では、表にNot Null指定されてる場合に限り索引が使用されます」 ということではないですか? 今、手許にOracleがないのでテストしていませんので自信ありとはしませんが。

参考URL:
http://www.int21.co.jp/pcdn/oracle/article/optimizer.html
sha-girl
質問者

お礼

ご回答有難うございます。 oracleだと ANALYZE INDEX ~ VALIDATE STRUCTURE文で 調べられるみたいですね。 私も手元にはないので暇な時試用版ででもためしたいと思います。

その他の回答 (5)

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.6

プライマリーキーだと 勝手に並べ替えちゃいますが。 order by を使ったとき、 インデックスキーは 使用してます。 現に実行速度を測ったら、 違いましたもん。 インデックスキーの使用とは 先に並べ替えておいた インデックスのテーブルを 参照する ということです。 あくまでも。

sha-girl
質問者

お礼

ご回答有難うございます。 ANALYZE INDEX ~ VALIDATE STRUCTURE文で 調べられるそうなので 週末にでも確認したいと思います。

  • msystem
  • ベストアンサー率42% (79/186)
回答No.4

索引は基本的に検索条件がある時に使用されませすが、オプティマイザのモードによっては、この場合でも索引は使われるかもしれません。必要なカラム名がaで並び替えもaカラムなので索引のアクセスだけで検索ができるため、そうなるかもしれません。でも、一般には、ほかの方が言っているように使用しないと思います。 ちなみに索引を2つ作った場合ですが、どちらが使われるかは、オプティマイザのモードによりますが、多分、myindiiの方が使われるはずですが、保証されません。

sha-girl
質問者

お礼

ご回答有難うございます。 オプティマイザですか。勉強になります。

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.3

WHERE句はありませんが、ORDER句に索引aが指定されているので索引が使用されるのが 普通ではないかと思います。 こちらの下の方の「■ ソートの使用」のところをご覧下さい。 http://www.hi-ho.ne.jp/tsumiki/doc_1.html

参考URL:
http://www.hi-ho.ne.jp/tsumiki/doc_1.html
sha-girl
質問者

お礼

皆様ご回答有難うございました。 ご指摘の通りorder byでは索引されないのですね。 索引そのものの自体理解不足でした。 CREATE INDEX myindi ON mytbl(a,b,c) CREATE INDEX myindii ON mytbl(a,b) と索引を作成した場合に SELECT a FROM mytbl WHERE a = 'a' ORDER BY a; 例えばこういう場合だと、使用する索引の優先順位とかあるのでしょうか?

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.2

多分、使用されないと思います。 インデックスというのは、検索するために使用されるものだからだと思います。 ま、インデックスをはったものと、はってないものと 作って 検索速度を比較してみるしかないですけどね。

sha-girl
質問者

お礼

ご回答ありがとうございます。

noname#4564
noname#4564
回答No.1

試してませんが、WHERE句がないから、インデックスは使用されないのでは? 使用しても意味がないし。

sha-girl
質問者

お礼

ご回答ありがとうございます。