プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

プロはselect句で処理する - SQL Tips

当初の予定からだいぶスタートが遅れているけど、
平常運用できそうなシストレ概要が出来上がりつつある。
f:id:tos5511:20160903040204p:plain
※適当に雇用統計で試しただけのもの。

根詰めればたぶんすぐにGoLiveできるんだろうけど、なんだろうな。
昔ほどのやる気がないのか、社畜から離脱するつもりがないのか
なかなか継続して完成まで漕ぎ着けないでいる。

そうして、半月ぶりくらいに重い腰をあげて制作を再開すると
多少なりとも可読性には気を付けているものの所詮素人。
何してる処理か理解することから始めなければならず中々に効率が悪い。

一週間前の自分は他人とはよく言ったものだ(笑)
f:id:tos5511:20160903040732p:plain

前置きはここまで。そんなこんなで今週、過去に書いた
DBへのリクエスト箇所を見直していたらボトルネックがあることが判明し、
書き直したところ大分パフォーマンスが改善しました。

多少なりともSQLやってる人からしたら当たり前の話かもしれないんですけど、
case文などをwhere句で処理するより、selectでやったほうが早いです。
論より証拠。

7千万レコードのテーブルを使って実験しましょう。
f:id:tos5511:20160903041406p:plain

select句でテーブル内全通貨の9時台のTick数を集計。
出力結果は2,443,919件。実行速度は46秒。
f:id:tos5511:20160903050234p:plain

where句で9時台のTickを絞り、select句で件数をカウント。
出力結果は当然2,443,919件。そして実行速度は・・26秒。
f:id:tos5511:20160903050659p:plain

あれ、whereでやるよりselectでやったほうが早いぞ!
て事を言いたかったんですがなんと結果は逆(笑)
※実際に改善したコードはwhere句の処理をselect句で処理するよう
変更したら早くなったんですが・・出直してきます。。

とにかく高パフォーマンス且つ可読性、メンテナンス性の良いコードは意識しておきたものです。