最近、C言語に触れることが少しあり分からない表記が気になっていたので
調べてみた。
<ポインタ演算子>
構造体へのポインタよりメンバ変数を参照するもの
struct s {
int n;
char str[12];
} x[20], *p;
としたときに
p = x;
と実行した場合、
間接参照すると
*p = x[0]
となるが、xのメンバ変数を参照できない。
メンバ変数を参照するための演算子がポインタ演算子。
p -> n = 4;
とすると
x[0].n = 4;
を実行したの同じこととなる。
<アドレス参照>
&x とするとxのアドレスを取得できる。
1000 番地に割り当てられていたとすると &x の値は 1000 になります。
<INとEXISTS>
EXISTS の方が速い。理由は以下の二つです。
・結合キーにインデックスが張られていれば、実表は見に行かず、インデックスのみを参照する。
・インデックスを持っていない場合でも、検索列をソートした一時テーブルを作り、2分探索することで、全表走査よりも効率的に検索を行なう。
※EXISTS は一行でも条件に合致する行を見つけたらそこで検索を打ち切るので、IN のように全表検索の必要がない。
EXISTS の方が速い。理由は以下の二つです。
・結合キーにインデックスが張られていれば、実表は見に行かず、インデックスのみを参照する。
・インデックスを持っていない場合でも、検索列をソートした一時テーブルを作り、2分探索することで、全表走査よりも効率的に検索を行なう。
※EXISTS は一行でも条件に合致する行を見つけたらそこで検索を打ち切るので、IN のように全表検索の必要がない。
