タグ

sqlに関するy-kobayashiのブックマーク (37)

  • なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 『SQLパフォーマンス詳解』の翻訳者の松浦隼人さんに、8つの「SQLが重たくなる原因とその対策」を聞きました。システムのボトルネックになるような「問題のあるSQL」を回避するノウハウを学びましょう。 データの操作や定義をする言語「SQL」は、どのような領域を担うエンジニアにとっても必修科目です。しかし、その仕様をきちんと理解し、パフォーマンスに優れたSQLを書ける方はそれほど多くありません。問題のあるSQLを書いてしまい、知らぬ間にそれがシステムのボトルネックになってしまう事態はよく発生します。 では、どうすればそうした事態を回避できるのでしょうか? そのノウハウを学ぶため、今回は『SQLパフォーマンス詳解』の翻訳者であり、自身もエンジニアでもある松浦隼人(まつうら・はやと/@dblmkt)さんに8つ

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • 新著が出ます:『プログラマのためのSQLグラフ原論』 - ミックのブログ

    今月下旬に、J.セルコの『Trees and Hierarchies 2nd Edition』の邦訳が刊行されます。同著者の代表作『プログラマのためのSQL 第4版』のスピンオフの一つで、RDB/SQLで木と階層構造を扱うための方法論にフォーカスしたなかなかマニア度の高い一冊です。主眼となる「入れ子集合モデル」については、私もあちこちの記事や書籍で紹介したことがあるので、ご存じの方もいるかもしれませんが、より包括的かつ理論面までカバーした格派の内容になっています。 表紙の女性はマリア様でしょうか。家の方が刊行されたときも「このおっさん誰?」という質問が相次ぎましたが、ガリレオという説が有力なようです。そう言われてみると家は『星界の報告』のような格調を感じます。書の方は、長らく定説とされてきたモデルをひっくり返そうという意味では『天体の回転について』みたいな性格もあるのですが、大型

    新著が出ます:『プログラマのためのSQLグラフ原論』 - ミックのブログ
  • ORDER BYで、単純な昇順降順「以外」で並べる! - なからなLife

    いやー、知らないって怖いね。 なんだこのキモいSQLは、って思ってしまったけど、調べているウチに、これちゃんとSQL構文に則ってる!こちらが間違ってた!って事がわかっていきました。 あえて、知らなかった所から勢いで書いていたのを、そのままにしてみました。 キモいSQLコードを偶然見つけた SQLにおけるORDER BYって、その後にカラム(およびそのエイリアス)を並べてソート順として使用するわけですが、MySQL案件のお仕事の中で偶然こんなものを見つけて、絵に描いたような二度見リアクションしました。 SELECT * FROM tbl ORDER BY id = 23; -- (1) SELECT * FROM tbl ORDER BY FIELD( id, 23, 234, 543, 23 ); -- (2)こうした、「ORDER BYに、あたかもWHERE句で絞り込む条件指定のような使

    ORDER BYで、単純な昇順降順「以外」で並べる! - なからなLife
  • SQL実践入門 ──高速でわかりやすいクエリの書き方 | Gihyo Digital Publishing … 技術評論社の電子書籍

    WEB+DB PRESS plus SQL実践入門 ──高速でわかりやすいクエリの書き方 著者 ミック 著 発売日 2015年4月11日 更新日 2019年9月25日

    SQL実践入門 ──高速でわかりやすいクエリの書き方 | Gihyo Digital Publishing … 技術評論社の電子書籍
  • RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita

    "Nested Loop Joinしか取り上げて無いのにタイトルが大きすぎないか" と指摘を頂いたので、タイトルを修正しました。Merge JoinとHash Joinのことはまた今度書こうと思います。 「JOINは遅い」とよく言われます。特にRDBを使い始めて間がない内にそういう言説に触れた結果「JOIN=悪」という認識で固定化されてしまっている人も多いように感じています。 たしかに、JOINを含むようなSELECT文は、含まないものに比べて重たくなる傾向があることは事実です。また、質的に問い合わせたい内容が複雑で、対処することが難しいものも存在します。しかし、RDBの中で一体どういうことが起きているのかを知り、それに基いて対処すれば高速化できることも少なくないと考えています。 稿では、JOINの内部動作を解説した上で、Webサービスを作っているとよく出てくるJOIN SQLを例題に

    RDB - 実例で学ぶ、JOIN (NLJ) が遅くなる理屈と対処法 - Qiita
  • 「SQLパフォーマンス詳解」という本を翻訳しました | b.l0g.jp

    SQLパフォーマンス詳解」というを翻訳しました 2015-04-07 題の通り、「SQLパフォーマンス詳解」(原文タイトルSQL Performance Explained)というを翻訳しました。PDF版と印刷版が上記サイトから購入できます。 (追記 2017年9月から、渋谷のBOOK LAB TOKYOさんでも印刷版を販売していただいています。輸送コストの関係で、サイトから購入するより若干安くなっています) リレーショナルデータベースにおいて、SQLとインデックスがどのように関連し、どのようにすればSQLのパフォーマンスを良くできるのかを解説したです。特定のデータベース製品に焦点を当てたは多数ありますが、このではOracle Database、PostgreSQLMySQLSQL Serverの4つのメジャーなリレーショナルデータベース製品を同時に扱っていて、それぞれのク

  • 開発者のためのSQLパフォーマンスの全て

    前書き - インデックスの作成はなぜ開発者のタスクなのか インデックスの 内部構造 - インデックスは何に似ているか インデックス リーフノード - 二重連結リスト 検索 ツリー(Bツリー) - バランス木 遅いインデックス パートI - インデックスを遅くする2つの原因 where 句 - 検索のパフォーマンスを改善するためにインデックスを作成 等価 演算子 - 一致するキーの検索 プライマリキー - インデックスの使い方を確認 複合インデックス - 複数列に対するインデックス 遅いインデックス パートII - 前の問題点が再び 関数 - where句の 中での関数 大文字・小文字を区別する 検索 - UPPERと LOWER ユーザ定義 関数 - 関数インデックスの制限 インデックスの作り過ぎ - 冗長性の排除法 パラメータ化 クエリ - セキュリティとパフォーマンスのために 範囲 検

    開発者のためのSQLパフォーマンスの全て
  • SQLデータベースに正しインデックスを作るのは 誰の役割?

    SQLのパフォーマンス問題は、SQLそのものと同じぐらいの歴史がある―― ある人は、SQLはそもそも遅いものだとすら言うかもしれません。これは、SQL歴史が始まった頃は正しかったかもしれませんが、今となっては全く 当てはまらないでしょう。にもかかわらず、SQLのパフォーマンス問題は今も一般的でよくあることです。どうしてそうなってしまうのでしょうか? SQL言語は、恐らく最も成功した第4世代言語(4GL)でしょう。その最大の利点は、「何を」と「どのように」 を分離できることです。SQL文は、どのようにそれを実行するかを記述せずに、単純に 何を必要としているかのみの記述になっています。以下のような例を考えてみましょう。 SELECT date_of_birth FROM employees WHERE last_name = 'WINAND'SQLのクエリは、データを要求する英語の文として読

    SQLデータベースに正しインデックスを作るのは 誰の役割?
  • 間違いだらけのSQL識別子エスケープ

    これから3回連載の予定で、SQL識別子のエスケープの問題について記事を書きます。SQL識別子のエスケープについてはあまり解説記事などがなく、エンジニア間で十分な合意がないような気がしますので、これらの記事が議論のきっかけになれば幸いです。 3回の予定は以下のとおりです。 間違いだらけのSQL識別子エスケープ(稿) SQL識別子エスケープのバグの事例 SQL識別子は結局どうすればよいか ということで、まずはSQL識別子のエスケープの失敗例について説明します。この失敗例はあくまで説明のために作ったもので、実際のものではありません。また、想定が「ありえない」と思われるかもしれませんが、意図的なものですのでご容赦いただければと思います。また、「間違いだらけの」というタイトルは、今回の題材が間違いだらけという意味であり、巷のSQL呼び出しがそうであるという意味ではありません。稿に登場する人物と団

  • SQLのエスケープ

    (Last Updated On: 2018年8月4日)SQLにエスケープなんて必要ないと考えている方も居るとは思いますが、現実にはエスケープを知っておくことは必須と言っても構わないと思います。 既にSQL識別子のエスケープについては書きましたが、今回はSQLエスケープというよりは安全にSQLデータベース利用する話です。先ずはエスケープの話を全て終わらせよう、と思っているのですがSQLエスケープのエントリが無いので作りました。私のブログを読んでいる方はエスケープ処理、プリペアードクエリの利用方法などはよくご存知だと思うのでここの部分は省略しています。 現在広く利用されているSQLデータベースのほとんどがプリペアードクエリをサポートしています。プリペアードクエリを利用すれば、SQL文とパラメーターを分離できるため、パラメーターがSQL文の一部として解釈されてしまう問題を回避できます。 プリペ

    SQLのエスケープ
  • PostgreSQL IN句での複数条件指定

    もういくつも寝ないでお正月です! Fusic Advent Calender5回目、最多出場回数を獲得することになりました安元です。 まだ確認してませんが、年末ジャンボが当たっているはずなので、 当たったあかつきには来年は車を買いたいと思います!! 基的なIN句の利用方法 SQLでIN句を使用したことはありますか? 一致させたい条件をカンマ区切りで並べるだけで簡単便利に利用できますね。 福問い合わせを利用する場合は以下のようになります さて、このIN句で複数条件指定できたら便利だと思いませんか? 日語で条件を表現すると基的なINの条件は 「安元 もしくは 納富 もしくは 浜崎 もしくは 渡辺」となりますね。 複数条件が指定できるということは 「安元で男 もしくは 納富で女 もしくは 浜崎で男 もしくは 渡辺で女」 こんな条件指定ができるのです。 ではSQLを見てみましょう。 今回は副

    PostgreSQL IN句での複数条件指定
  • #clubdb2 「Javaプログラマーに贈る:Groovyで楽にSQLを実行してみよう」の資料を公開しました | Unofficial DB2 BLOG

    久し振りに講師を務めたDB2の勉強会 CLUB DB2 第158回 「Javaプログラマーに贈る:Groovyで楽にSQLを実行してみよう」終了後の懇親会から帰ってきました。 勉強会も懇親会もとても楽しかったです。渋谷で、もしくはUSTREAM中継でご参加いただいたみなさま、当にありがとうございました。(USTがうまく中継できてれば良いのですが) 話の内容はあまりDB2には関係なく、ほとんど自分の趣味でGroovyについて話をさせていただきました。GroovyのパワーとJavaとの親和性について、興味を持っていただけたらとても幸いです。 資料をSldeShareで公開しています。 講義中に気づいた誤字を直した版でアップロードしています。スライドだけでは分かりにくい部分もあるかと思いますが、あまり高度な事は説明していませんので、ご興味のある方はぜひご覧ください。 さて次回のCLUB DB2

    #clubdb2 「Javaプログラマーに贈る:Groovyで楽にSQLを実行してみよう」の資料を公開しました | Unofficial DB2 BLOG
  • SQLを生成するCommon Lispライブラリ「SxQL」を作りました - 八発白中

    何か作ったときにしか更新しないブログが、最近では何か作っても「まあこの程度はブログ書くほどでもないか」と思って、更新も無いような感じになっています。 今回もそうやってスルーしようと思ったのですがに「ブログで紹介したらいいのに」と言われてしまい、と過ごす休日を潰して作ったライブラリとしては、もうこれは書かざるを得ないわけで、軽く紹介しておこうと思います。 Common Lispのデータベース周辺 Common Lispのデータベース周りではこれといった好むライブラリも無く、拙作のCL-DBIでようやく土台ができたという状態です。 ただ、依然SQLを文字列で書く必要がある。もちろんそれで困らないケースも多いのですが、WHERE句やORDER BY句だけが異なるクエリを複数回投げたいといったときにはプログラムから生成できるほうが好ましい。 PerlにはSQL::Makerというライブラリで、

    SQLを生成するCommon Lispライブラリ「SxQL」を作りました - 八発白中
  • SQLアンチパターン - ナイーブツリー

    より詳細な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アンチパターン - ナイーブツリー
  • Impala SQL Language Elements

    The Impala SQL dialect supports a range of standard elements, plus some extensions for Big Data use cases related to data loading and data warehousing. Note: In early Impala beta releases, a semicolon was optional at the end of each statement in the impala-shell interpreter. Now that the impala-shell interpreter supports multi-line commands, making it easy to copy and paste code from script files,

  • SQL Fiddle - Online SQL Compiler for learning & practice

    During Phase 1, only users who are logged in can access the AI chat feature. SQL Fiddle is free to use and ad-free! Want to help us? It takes 10 seconds Step 1: Like & Share our EFE Bulk Extensions videos Step 2: Like & Share our EFE Bulk Insert videos Thank During Phase 1, only users who are logged in can access the AI Editor feature. SQL Fiddle is free to use and ad-free! Want to help us? It tak

  • 子要素を再帰的に取ってくるストアドプロシージャ « Coding Suicidal

    なぜ MySQLは、WITH RECURSIVE文をサポートしていないため、たとえば以下のような自己参照テーブル “comments” +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | parent_id | int(11) | YES | | NULL | | | body | varchar(255) | YES | | NULL | | | created_

  • SQLアンチパターン - ジェイウォーク

    社内勉強会資料 追記: 2013-10-31 ついったで指摘( https://twitter.com/akuraru/status/395822183777202176 )を受けたので入れ子集合のノード追加の説明の所を修正しました。

    SQLアンチパターン - ジェイウォーク
  • 「相関サブクエリ」とは何かを理解して,複雑なSQLでも読めるようになろう - 主に言語とシステム開発に関して

    SQLの「相関サブクエリ」がわかれば・・・ 巨大なSQLが,迷わずに読めるようになる。 「関数」のような,便利なサブクエリを書けるようになる。 以下では, 「相関サブクエリ」とは何か? 普通のサブクエリ(非相関サブクエリ)やJOIN操作とは何が違うのか? 多重にネストされた,巨大なSQLの読み方は? という点を論じる。 サンプルデータ,および全体の方針 (1)サブクエリ無しでJOIN (2)INで非相関サブクエリ (2)の補足:サブクエリを「関数」と考えてみよう (3)EXISTSで相関サブクエリ 他のサンプル 巨大SQLの読み方 サンプルデータ,および全体の方針 まず,相関サブクエリの説明のために,以下のようなテーブルを例として取り上げる。 table1が,普通のデータ table2が,マスタデータ(ホワイトリスト) 「マスタに一致しないレコードをはじく」という操作をしたい。 方法は3パ

    「相関サブクエリ」とは何かを理解して,複雑なSQLでも読めるようになろう - 主に言語とシステム開発に関して
  • Cloudera Blog

    In an era where artificial intelligence (AI) is reshaping enterprises across the globe—be it in healthcare, finance, or manufacturingit’s hard to overstate the transformation that AI has had on businesses, regardless of industry or size. At Cloudera, we recognize the urgent need for bold steps to harness this potential and dramatically accelerate the time to […] Read blog post

    Cloudera Blog