2016年05月17日

SQLServerでのページング機能(Offset Fetch)

SQLServerでページング機能を実装したいときに、データの何番目〜何番目までを取得する、というSQL文を書きたい場合があります。
SQLServer2012から、これを簡潔にかける構文があることを、今日知りました。

OrderBy句に対して、さらにOffsetとFetchの句を組み合わせることで、簡単に書くことができます。
詳しくは、https://technet.microsoft.com/ja-jp/library/ms188385(v=sql.110).aspx

昔はちょっと技巧的なやり方をしていましたが、これならとてもシンプルです。

ただ、大量データに対して行う場合は注意が必要です。
OrderBy句を指定する必要があるので、テーブルの全件ソートが発生します。
SQLServer内部では、テーブルの内容を一度すべてソートした後、OffsetとFetchで指定した範囲のデータを取り出します。

インデックスを適切に設定しておかないと、応答が返ってこないということになりかねないので、設計には十分注意が必要ですね。
posted by キヨ at 21:54| Comment(0) | TrackBack(0) | SQLServer

2016年05月03日

「同じミスをしない」は、当たり前なのか、努力して得るものなのか

【同じミスを繰り返す部下をもっとダメにする叱り方】
http://diamond.jp/articles/-/90474

いろいろ共感できる記事でした。
同じようなミスを繰り返してしまう人を、どのように改善していけばよいのか、非常に難しい課題です。

 
注意する側に立つと・・・

「同じことを繰り返しているよ、そこを直してくれればいいんだよ。」

そう思って、過去の同じミスの話を蒸し返すと、注意された側がすごく悪い印象を持つことがあります。
とはいえ、同じ失敗を繰り返しているということを、その人に認識してもらう必要はあるのですけれどね。

 
一方、注意された側に立つと・・・

過去の類似の失敗をしたことがあったかもしれないけれど、それとこれとは発生の理由は同じではない別の失敗だ、と認識している場合もあります。
また、同じミスをしていることは十分に理解はしていて、そこを解決したいという気持ちは持っているものの、でも同じミスを繰り返してしまい、どう改善すればよいか自分で解決法が見いだせず苦しんでいる場合もあるわけです。

 
物事をいつも1発でやり遂げられる能力は、当たり前にあるべきものなのでしょうか。
それとも、苦労して体得すべきものなのでしょうか。

難しい問題ですね。
posted by キヨ at 15:54| Comment(0) | TrackBack(0) | ビジネススキル