- - PR -
【ファンクション索引とは?】
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-17 21:39
文献などを読んだのですが、oracleのファンクション索引の意味がよくわかりません。
噛み砕いて説明していただけるとありがたいです。 ご存知の方がいらっしゃいましたら教えていただけるとありがたいです。よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2006-11-19 01:23
逆に教えてください。
ファンクション索引について何かしらの解説を読まれて "意味がよくわからない" となったと思うんですが、何に疑問をもたれたんでしょうか? 私が今、言えることは 普通のINDEXを作るSQLとしては
などとして D列(仮にDATE型としてください)に対してINDEXを作成する →D列の格納されている値とその格納場所を把握する。 という作業になりますが、このD列に対して以下のようにTO_CHAR関数(ファンクション)をつけた結果に対しINDEXを作成することがファンクション索引の利点だと思っています。
上記2種のINDEXがある状態で
とやった場合、TESTIDXは使用されず、TESTIDX2が使用されます。 すでに変換した値に対し、INDEXが作成されているので、 そのインデクスの内容をサーチし、該当するデータを探しだせば早いと思いませんか? もし、TESTIDX2がない状態(TESTIDXだけの状態)で上記SQLを発行すると TESTIDXが使用されると思われるかもしれませんが、 TESTIDXには変換する前の値が格納されているので、合致せず使用してくれないんです。 なので、WHERE句なのであらかじめ関数を用いて値を変換し検索条件とすることが わかっている場合、 ファンクションの結果を持ったINDEX = ファンクション索引 を作成しておくことで、検索時間の向上を図ることが出来ます。 ・・・とこの説明、あまりうまくはないかと思いますが、 何かの糸口になれば幸いです。 _________________ 夏椰 @ わんくま同盟 夏椰の庵 Microsoft MVP for Windows Server System - SQL Server ( Jul 2006 - Jun 2008 ) | ||||||||||||
|
投稿日時: 2006-11-23 13:12
ものすごく分かりやすい解説でした。
ありがとうございます。理解できました。 |
1