【TRY! ORACLE MASTER】11g SQL基礎I 編
(第6回 表以外のオブジェクト)
|
問題(11) 次の文を実行しました。 CREATE SEQUENCE line_item_id_seq このCREATE SEQUENCE文に関して正しい記述はどれですか。
|
|
回答と解説: 正解は、2.です。 番号を自動で生成したいときに使用する順序というオブジェクト。作成時にオプションを指定することで、生成される順序番号をカスタマイズできます。その作成時のオプションについて確認する問題でした。 START WITHは順序の開始値を、MAXVALUEは最大値を指定します。NOCYCLEは、最大値まで達した後、番号を再利用しない、という意味です。 |
|
問題(12) 一般的に、どのような列に索引を作成するとよいでしょうか。
|
|
回答と解説: 正解は、2.です。 検索速度に問題があると、索引を付けようか、という話になりますが、無闇に付けたその索引、実は使われていないかも?!一般論として、どんな列に索引をつけるべきか、という問題でした。 結論から言うと、WHERE句の条件によって、沢山の行から、ごくごく一部の行に絞り込むようなケースで、索引は効果を発揮します。 もともと行数の少ない表では、索引スキャンよりも全表スキャンの方が高速となるケースが多いです。含まれる値の種類が多く、WHERE句の条件に よって少ない行に絞り込まれる場合、まさに索引が効果を発揮するケースです。WHERE句の条件でnull値のデータを検索する場合は、索引は役に立ちま せん。nullのデータは索引に格納されないからです。 実際に索引を使うかどうか、決めているのは"オプティマイザ"です。索引を使った方が効果的な場合は索引を使い、そうでない場合は索引を使いません。 |
