- PR -

SQL の劣化とは、ということで。

1
投稿者投稿内容
tun_chn
会議室デビュー日: 2006/11/25
投稿数: 7
投稿日時: 2006-11-28 23:57
SQL の劣化とは、ということで。

データベース共通だと思いますが、
select * from table_name
go

というようにした時、
SQL は劣化(memory, cpu, harddisk に熱)すると理解しておくべきでしょうか??
そんなことはないでしょうか。
それと index が使われない書き方した場合、どうでしょうか。
やっぱり劣化するでしょうか。また、Oracle の場合、index が使われない書き方の種類とは??
varchar に 整数指定して書いた場合、index は全く機能しないとか、あったりして。。。。。。

また、Oracle の場合、上記事項を、どの SGA 用語と関連づけて考えるべきでしょうか。

SGA
Fixed -- @
ライブラリーキャッシュ -- A
DC キャッシュ -- B
Java バッファ -- C
その他 -- D
空き -- E

共有プール -- A = A+B+C+D+E
DB バッファ -- B
REDO バッファ -- C

総 SGA サイズ = @+A+B+C
インスタンスのデータおよび、制御情報を含む共有メモリー領域
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2006-11-29 00:29
おそらく 最適な実行手順が選択されないということでは

index が使われない最大のケースは SQlの問い合わせとINDEX項目が一致しないことです。

他にもいろいろありますが、とりあえずここでも読みましょう
http://www.atmarkit.co.jp/fdb/rensai/orasql07/orasql07_1.html
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2006-11-29 00:55
SGA の構成ってこんな感じだったと思いますけど・・・

共有プール
ライブラリキャッシュ
ディクショナリキャッシュ
Large プール
Java プール
DB キャッシュ
Redo ログバッファ (Fixed)
Overhead
oracle
常連さん
会議室デビュー日: 2003/12/04
投稿数: 29
お住まい・勤務地: さいたま
投稿日時: 2006-11-29 09:41
索引については他の方が述べられていますので、、、略

劣化についてですが、、、、、
メモリーリークは別として、熱による劣化は私は考えたことがありません。

意識しているのは共有プールの使い方です。
使用したSQL文は共有プールに格納されます(ライブラリキャッシュ)。
その後、別のSession、または自身でも同一のSQL文を実行すると、共有プール内を検索して、
以前に使用されたSQLを探し出し、そのSQLを利用します。(解析済み、実行計画作成済み)

値だけ異なる同一内容のSQL文が同一とみなして実行するか、別として実行するかの判断は
初期化Paramaterで設定できます。(OracleVersionにもよりますが、、、)

そのライブラリキャッシュがいっぱいになると最近使用されなかったSQL文が
メモリーから消えます。逆に、最近使用されたSQL文が残ります。
この部分がスレ主さんの言う劣化?に相当しますか?
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2006-11-29 09:55
SQLでIN句とかBETWEENとか使うとインデックスが効かなくなるとかあったような・・・。

SQLはチューニングする?
_________________
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-11-29 10:29
引用:

未記入さんの書き込み (2006-11-28 23:57) より:
SQL の劣化とは、ということで。


同一人物としか思えないのだが、ということで。(プ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35192&forum=26

ハンドルを使い分けているのはなぜ?(そんでもって利用規約違反だったような気がする)
1

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