おすすめ読書プログラミングデータベースSQLをより使いこなして上級者になるための本です。SQLをの基礎的なことはわかっている人向けの内容で、応用的な書き方がメインになっています。いっても「CASE」とか「HAVING」といった位のものです。初心者から次のステップにいくために必要といったくらいでしょうか。各章には練習問題もついています。SQLをどうやって勉強したら良いかわからないと悩んでいる人にもおすすめです。応用的な位置づけになっています。「CASE」や「HAVING」、結合などを取り扱います。初心者の次のステップというくらいかなと思います。大規模なRDBを普段から取り扱っている人にとっては、特に難しい内容ではありません。簡単なものしか取り扱ったことがなければ、とても参考になると思います。SQLを書く際の作法なども紹介されています。スペースやインデント、大文字小文字の使い分けなど覚えて置くべきです。現場によってルールはあると思いますが、基本的なルールが書いてあるので参考になります。他にもRDBの歴史や背景についての紹介もあります。仕組みや裏側についての情報もあるので、知らない方は読んでおくと世界が広がっていいと思います。実務では訳には立たないと思いますが、概念を知っておくと理解が深まります。SQLのチューニングについて基本的なことが書かれているので参考になります。簡単に取り入れられるものばかりで大きな改善は見込めないかもしれません。SQLの書き方に関するものなので、普段から気をつけておくのがいいと思います。以下のようなものがありました。そのまますべての環境で該当するわけではないですが、普段SQLを書く際には気をつけようと思います。大きな考え方としては、中間テーブルやソートを減らすこと、インデックスを利用することによって、物理メモリへのアクセスを減らすことを目指します。サブクエリを引数に取るときはINよりもEXISTSを使うべきEXISTSならインデックスが有効になる。EXISTSは該当があればそこで検索を打ち切る。INの場合はサブクエリの実行結果をワークテーブルに格納して、そこから全件走査を行います。そのため負荷が大きいです。サブクエリを引数に取るときはINよりも結合を使うべきサブクエリがないので中間テーブルが作られない。インデックスが利用できる集合演算子のALLを使うUNIONとかは暗黙的にソートが行われます。重複排除を行うためです。ソートは負荷が大きいです。ALLを使いましょう。DISTINCTをEXISTSで代用するDISTINCTも重複削除のためにソートが行われます。EXISTSを使うことでソートせずに重複削除を行うことができる場合があります。極値関数でインデックスを使うMAXとMINです。ソートが行われますが、インデックスがあればインデックスのスキャンだけですみます。できるのであればインデックスを対象にスべきです。WHERE句で書ける条件はHAVING句には書かないGROUPで集約する後にHAVINGでフィルタリングするか、集約する前にWHEREでフィルタリングするかです。よる集約時にソートが行われるので、先に行数を絞ったほうがよいです。WHERE句ならインデックスが利用できるかもしれません。BYで指定するキーはインデックスの存在するキーであれば、インデックスを利用できます。ソートが行われるので、ソートの高速化が期待できます。索引時に加工しているとインデックスが無効インデックスを利用するときは、条件式の左辺は裸。NULLをつかった場合はインデックスが無効インデックスにはNULLは存在しないためです。非定型をつかっているとインデックスが無効<>とか!=とかはインデックスが無効です。複合インデックスがあるのに列の順番が違うそのままです。複合インデックスは正しく設計して、正しく利用しましょう。前方一致のみ有効です。暗黙の型変換を行っているとインデックスが無効オーバーヘッドも発生しますし、良くないことばかりです。正しくDBを定義を確認して明示的に方を変換して扱うようにしましょう。HAVINGで中間テーブルを減らす中間テーブルをつかってWHERE句に指定しがちですが、中間テーブル無しでHAVINGでできるのであればそのほうが良い。INで複数のキーを利用する場合、一箇所にまとめるキーを結合したり行比較を用いることで、複数のINを一つにまとめられるかもしれません。ビューで集約関数や集合演算が入っていると速度低下の原因になりがち集約関数、AVG,SUM,COUNT,MAX,MIN集合演算子、UNION,INTERSECT,EXCEPTおわりに初級者から一歩前に出るための知識が書かれています。練習問題もあるので、しっかり取り組んでおくと実務でも使えて良いです。実際にはデータ合ってのSQLなので、これだけでは役に立たないのですが、基本はとても大切です。仕様に沿ったSQLを書き、正しくデータを取り扱えるようになるためには経験が重要かなと思います。初心者のうちは仕様書や定義をしっかり参照できるようになることが一番大切だと思います。editerマークダウン特化エディタアプリマークダウンのプレビュー・よく使う記号を入力するボタンが利用できます。野々市市コミュニティバスのっティ時刻表アプリルートとバス停を選択して時刻表が確認できます石川県野々市市に住むフリーランスエンジニア。応用情報とDBスペシャリストの資格を保有。Webシステムの構築、スマホアプリ、プログラミングメンターなどの依頼に対応できます。