『NOT IN』『NOT EXISTS』の検証

『INDEX』のキホンで、否定条件(NOT IN等)はINDEXが効かず性能的に使用は避けるべきと書きました。
確かに「NOT IN」より「NOT EXISTS」を使うべきだとされていることもありますが、しかし昨今のRDBでは、何かと最適化もされているので実のところどうなのでしょうか・・・

この他にも「LEFT JOIN + IS NULL」も代用できますが、これらの違いを各RDBでの性能の違いを検証してみました。

“『NOT IN』『NOT EXISTS』の検証” の続きを読む

『JOIN』と『SELECT列のサブクエリー』の性能検証

「JOIN」と「SELECT列のサブクエリー」は、他のテーブル情報をキーを使って取得するという点においての効用としては似ています。

私の場合は、JOINで取れるものは、サブクエリーは基本使いませんが、その理由は「可読性」もありますが「性能的」にもサブクエリーは劣っているという印象もあります。
しかし、昨今のオプティマイザや処理の最適化が行われている、RDBではどのような結果になるのか気になったので、単純なサンプルを使って代表的なデータベースそれぞれの性能的な違いを検証してみました。

(PC環境やデータベースのバージョンやドライバやデータ件数、使用ツールの違いで結果が異なる場合があるので、あくまで参考として頂ければと思います。)

“『JOIN』と『SELECT列のサブクエリー』の性能検証” の続きを読む

Node.js で簡単にtcpスキャンする

こんにちは、WOWの梶野です。
今回は純粋なNode.jsです。

tcpスキャン


スキャンといいつつ、空いているポートを見つける用途ではありません。
知っているホスト、ポートに対して、生きているかどうかをチェックする用途です。

やりたかったこと:

  • Web Serverが生きているのかどうかをcronなどで定期的にチェックする。
  • HTTPでアクセスを飛ばすと、アクセスログが残ってしまうのでこれは避けたい。
  • とにかく軽く、早いものが良い。
  • ワンライナーでチェックしたい。

“Node.js で簡単にtcpスキャンする” の続きを読む