部分結果


SQLクエリが返す全ての結果は必要はないけれど、 その最初の数行だけが欲しいと思ったことがあるでしょう。例えば、 最新の10メッセージを表示したいといった場合です。このような時、 ユーザにはそれ以上古いメッセージも見せたい、という場面もよくあります。 その方法として、昔からあるページナビゲーションを使うか、ちょっとモダンな 「無限スクロール」のパターンを使うかもしれません。 こういった機能を使うためのSQLクエリは、最新のものを検索するために 全てのメッセージを検索しなくてはならないようだと、 深刻なパフォーマンス問題を引き起こすことがあります。パイプライン化されたorder byは、 そういったクエリを最適化するのには、非常に強力な武器になります。

パイプライン化されたorder byは、 結果をソートするコストを削減するためだけでなく、 全ての行を読んでからソートすることなしに、最初の結果を出力できることにも 利点があります。つまり、パイプライン化されたorder byは、 処理を開始するコストが非常に低いのです。これにより、最終結果を出すための 処理を無駄にすることなく、最初の数行を取り出した後に処理を中断することが 可能になります。

初心者からエキスパートまで役に立つ内容です。
特に駆け出しのエンジニアは持っておくといい

この章では、クエリの全結果ではなく部分結果を効率的に取り出すために、 パイプライン化されたorder byをどのように使うのかを 明らかにしていきます。そのためのクエリを扱う文法はデータベースによって 様々ですが、どのデータベースでも同じような方法で実行されます。 改めて、それらは当たり前の機能であることを示します。

この説明が気に入れば、きっと この本も 気に入るはず。

Photo of Markus Winand
Markus Winand氏は、開発者がSQLパフォーマンスを改善するお手伝いをしています。 彼は、SQL Performance Explainedの 著者でもあり、出張トレーニングhttp://winand.at/での リモート講義も 行っています。