こんにちは、tosumaです。
こちら2010年の記事のアーカイブです。
今日は技術者としてのメモ日記。
いやいや、今さらですが、
考えてみると(SQLで)否定形の使い方がわからないという。
もう1年半?くらい書いているのに。
あと、NULLの検索の仕方。
いや、<>とか!=、NULLならIS (NOT) NULLとかですけど、
こいつらは使うとフルスキャンになってしまいます。
まぁ今までは否定は使用しないようにしてたし、
特に意識したことなかったんですが。。。
今回ついに避けられない事態となりました。
しかも対象は10000000件。
もらった時間は10分。
んー、調べたり考えた所、
DBの特徴として、NULLは=に引っかからない特徴がある。
ということで、
「CUSTOMER_CD=CUSTOMER_CD」でIS NOT NULLと同じ検索になります。
そして、否定。
これわかんね。
結局、ORACLEならMINUS使うか、SQL SERVERならEXCEPT使うのかな。。。
でも集合演算子使うなら最初から<>で検索した方が早いしなぁ。
まぁケースバイケースですが。。。
そもそもUPDATEだからなぁ。。。
と、ここでSQLSERVERでなら面白いインデックス見つけてしまった。
フィルタリングインデックス。
これはORACLEでいうファンクションインデックスのこと?
全然違うな。笑
なんでも最初から条件をつけたインデックスらしく、
例えば、「WHERE CUSTOMER_CD <> '10000'」とかで作ると
それ以外を保持したインデックスになるとか。
ORACLEだとあらかじめ統計情報が必要とか、
それなりに制約があるんですが。。。なにもないのかな?
とりあえず明日やってみよう。
あと、誰か分散トランザクションのやり方教えて。。。
お茶を濁していますが、ネットワーク経由のDBでの使い方がわからん。。。
コンポーネントオプションも、ファイアーフォール(ポート設定)もバッチしなのに。。。
あと、レジいじれってMSのページに書いてあったけど。。。
怖くて触れません。自分のPCならまだしも。。。
誰か教えて下さい。。。
お読み頂き有難うございました。