位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 TokyoYoshiyuki Asaba
![なかったらINSERTしたいし、あるならロック取りたいやん?](https://cdn-ak-scissors.b.st-hatena.com/image/square/e90dc3f848e11ea0ea3636a20ec36f84d65ce528/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fdevops-150822034319-lva1-app6891-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
SQL高速化についてはいろんなサイトで取り上げられているので 今更取り上げる必要はないかと思っていましたが、 ふと最近仕事をしている中でハマっている人が多いポイントであると感じたため 改めて書いてみることにしました。 EXISTSが速いという誤解 EXISTSについて書かれたサイトを見ると、 「速い」というような記述を見かけることが多いかと思います。 しかし、これはあくまでサブクエリを組んだ場合に、INやイコールを使って比較するときと比べて速い場合が多いというだけであり、 EXISTSが速いというわけでは決してありません。 ハッキリ言ってしまうと、EXISTSを使うクエリは基本的に遅いです。 これは正確に言うと、EXISTSを利用するケースにおいて相関サブクエリが使われていることが原因で遅くなっています。 相関サブクエリとはどういうものか、以下にメンバー情報を格納した MEMBER テーブ
SAVEPOINT、ROLLBACK TO SAVEPOINT および RELEASE SAVEPOINT ステートメント
SAVEPOINT、ROLLBACK TO SAVEPOINT および RELEASE SAVEPOINT ステートメント
以下のウェブサイトの解説を読むと、頭が論理的に整理されて、相関サブクエリの処理の流れを理解できます。 【 参考ウェブサイト1 】Hatena::Diary (2010/11/08) 「『相関サブクエリ』とは何かを理解して,複雑なSQLでも読めるようになろう」 【 参考ウェブサイト2 】TECHSCORE 「SQL 7章 サブクエリ」 【 参考ウェブサイト3 】CodeZine 「達人に学ぶSQL 相関サブクエリで行と行を比較する」 1.相関サブクエリとは、 ( 参考ウェブサイト1 より 抜粋 )※太字は、本記事 投稿者による サブクエリの内側と外側が,互いに関連しあっているのである。 サブクエリの中身を「関数」とみなした場合・・・_ __非相関サブクエリの場合は,一度実行すればよい。 相関サブクエリの場合は,毎回実行する必要がある。 ( 参考ウェブサイト2 より 抜粋 )※太字は、本記事
より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが構築できたので、その経緯と得られた知見についてお話ししたいと思います。 以下のようなトピックを考えています。 ・CQRSの定義とメリットデメリット ・DDD,CQRSを検討するにあたってのORMの選定ポイント ・構築したアーキテクチャ
SQLアンチパターン 作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型本購入: 9人 クリック: 698回この商品を含むブログ (41件) を見る SQLアンチパターン読みました。非常に面白かったです。アンチパターンについて事例を交えてわかりやすく書かれており、プログラマとして何年か仕事したことがある人なら、「あの案件のデータベースはこのアンチパターンだった」とか「このテーブル定義書いたことある」とか、過去の色々を思い出しながら楽しく読める本だと思います。 この本の良いところは、「アンチパターンを用いるのは絶対駄目」と言うのではなくて、アンチパターンを用いてもよい場合や、アンチパターンを見つけた場合の解決策のバリエーションにも十分なページ数を割いているところです。アンチパターンに遭遇したり、アンチ
こっちに移動 qiita.com
はじめに 木構造と呼ばれるデータ構造の一種があります。1つのルート(根)と呼ばれるノードを始点として、(通常)複数のリーフ(葉)と呼ばれるノードまでを経路で結んでできるデータ構造です。その名のとおり自然界にある「木」の構造ですし、学校時代、確率の授業で樹状図を書いた経験のある人もいるでしょう。 この構造は、私たちの周囲にとてもたくさん存在します。家系図や組織図も木ですし、IT関連の例では、ヒープやRDBのインデックス、ディレクトリ(フォルダ)によるファイルシステムやXMLも木構造です。Webの掲示板でも、最初の書き込みをルートとしてそれに対してコメントがつけられ、そのコメントにまたコメントがつけられるというプロセスで木構造を形成します。ここでは1つの書き込みがノードになります。 このように、IT技術と木構造は切っても切れない関係にありますし、多くの分野で応用されてもいるのですが、実は長い
■ インデックスとは データベースの世界で、インデックス(索引)とはテーブルに格納されているデータを 高速に取り出す為の仕組みを意味します。 インデックスを適切に使用することによってSQL文の応答時間が劇的に改善 される可能性があります。 インデックスにはB-Treeインデックスをはじめ、ビットマップインデックス、 関数インデックスなどの種類がありますが、ここでは最も一般的に使われ、かつ ほとんどのDBMSでサポートされているB-Treeインデックスについて解説します。 ※ CREATE INDEX文でオプションを指定しない場合は通常B-Treeインデックスが 作成されます。 ■ B-Treeインデックスのしくみ B-Tree(Balanced Tree)インデックスは次のようなツリー状の構造になっています。 ツリーの先頭はヘッダブロックと呼ばれています。ヘッダブロックでは、キー値の 範囲
Use our SQL Injection Cheat Sheet to learn about the different variants of the SQL injection vulnerability. In this cheat sheet you can find detailed technical information about SQL injection attacks against MySQL, Microsoft SQL Server, Oracle and PostgreSQL SQL servers. What is an SQL injection cheat sheet? An SQL injection cheat sheet is a resource where you can find detailed technical informati
多くの人はこうやればいいと思っているかもしれません。 java.util.Date d = new java.util.Date(); java.sql.Date d2 = new java.sql.Date(d.getTime());確かにこれでも一応変換はできますが、きちんと変換してはいません。java.sql.DateのJavadocを見るとこう書いてあります。 SQL DATE の定義に対応させるために、java.sql.Date のインスタンスでラップされたミリ秒の値は、インスタンスが関連した特定のタイムゾーンで時間、分、秒、ミリ秒をゼロに設定することで、「標準化」する必要があります。 つまり、java.util.Date#getTime()をjava.sql.Dateにただ渡すだけでは不十分で、「特定のタイムゾーンで時間、分、秒、ミリ秒をゼロに設定しなければいけない」のです。そ
SQL チューニング編3 - SQL 実行計画解析、EXPLAIN、ヒントオプション Oracle 固有の部分があるかもしれません。SQL-Server、MDB では注意のこと。 ■表結合解析 ・表結合では、次のように NESTED LOOPS と、それぞれのテーブルに対する走査方法を解析できる。 表の結合においては、from 句の指定でレコード数の多いものから記述する 方が有利である。 (データベース最適化、データベースチューニング) truncate table plan_table; explain plan for select 受注番号, 受注m.品番 as 品番, 受注m.受注数 as 受注数, 品番m.受注数 as 受注累積, 受注m.得意先CD as 得意先CD, 得意先名, 受注m.更新担当者 as 更新担当者, 受注m.更新日付 as 更新日付, 受注m.更新時間 as
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く