データベースの索引

解決済みの質問

データベースの索引

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

投稿日時 - 2003-07-15 12:51:59

連想キーワード:

QNo.601883

暇なときに回答ください

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

#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

投稿日時 - 2003-07-16 00:58:36

お礼

ご回答有難うございます。
oracleだと
ANALYZE INDEX ~ VALIDATE STRUCTURE文で
調べられるみたいですね。

私も手元にはないので暇な時試用版ででもためしたいと思います。

投稿日時 - 2003-07-16 10:12:17

ANo.5

0人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(5件中 1~5件目)

ANo.6

プライマリーキーだと
勝手に並べ替えちゃいますが。

order by を使ったとき、
インデックスキーは
使用してます。
現に実行速度を測ったら、
違いましたもん。

インデックスキーの使用とは
先に並べ替えておいた
インデックスのテーブルを
参照する
ということです。
あくまでも。

投稿日時 - 2003-07-16 01:24:42

お礼

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

投稿日時 - 2003-07-16 10:13:33

ANo.4

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

投稿日時 - 2003-07-15 22:56:54

お礼

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

投稿日時 - 2003-07-16 10:11:55

ANo.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

投稿日時 - 2003-07-15 13:16:24

お礼

皆様ご回答有難うございました。
ご指摘の通り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;
例えばこういう場合だと、使用する索引の優先順位とかあるのでしょうか?

投稿日時 - 2003-07-15 14:01:01

ANo.2

多分、使用されないと思います。

インデックスというのは、検索するために使用されるものだからだと思います。

ま、インデックスをはったものと、はってないものと
作って 検索速度を比較してみるしかないですけどね。

投稿日時 - 2003-07-15 13:09:40

お礼

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

投稿日時 - 2003-07-15 13:55:35

ANo.1

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

投稿日時 - 2003-07-15 12:59:41

お礼

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

投稿日時 - 2003-07-15 13:55:28

あわせてチェックしたい
  • OraclのSQL文について(No2) ...
  • OraclのSQL文について(No3) ...
  • where order by ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら