タグ

SQLに関するdemiseのブックマーク (32)

  • MySQL(InnoDB)のSQLパフォーマンスチューニングのエッセンス

    はじめに MySQL(InnoDB)でSQLのパフォーマンスチューニングをするときに役に立つ知識をエッセンスとしてまとめました。結合(JOIN)やB-treeインデックスの探索の仕組み、実行計画の基的な見方を紹介します。 想定する読者は、SQLのパフォーマンスを改善する必要があるが実行計画をみてもいまいちピンと来ない方です。インデックスの作成の経験や、複合インデックスやカーディナリティの知識があることを前提にしています。目標は、実行計画の内容がよく分からない読者が、実行計画をみただけでクエリが実行される様子をイメージでき、自信を持ってクエリの改善にあたることができるようにすることです。 ストレージエンジンはInnoDBを前提としています。また、インデックスはB-treeインデックスを想定しています。全文検索の転置インデックスや空間検索のR-treeインデックスについては触れません。 イン

    MySQL(InnoDB)のSQLパフォーマンスチューニングのエッセンス
  • リレーショナル・データベースの世界

    序文 私の仕事は、DBエンジニアです。といっても別に望んでデータベースの世界へきたわけではなく、当初、私はこの分野が面白くありませんでした。「Web系は花形、データベースは日陰」という言葉も囁かれていました。今でも囁かれているかもしれません。 ですが、しばらくデータベースを触っているうちに、私はこの世界にとても興味深いテーマが多くあることを知りました。なぜもっと早く気づかなかったのか、後悔することしきりです。 もちろん、自分の不明が最大の原因ですが、この世界に足を踏み入れた当時、先生も、導きの書となる入門書もなかったことも事実です。 今でこそバイブルと仰ぐ『プログラマのためのSQL 第2版』も新入社員には敷居が高すぎました (2015年2月追記:その後、自分で第4版を訳出できたのだから、 人生は何があるか分からないものです)。 そこで、です。このサイトの目的は、データベースの世界に足を踏み

  • 高効率なSQLクエリの書き方 - Qiita

    概要 この記事では、SQLクエリをより効率的に記述するためのベストプラクティスとテクニックに焦点を当てています。データベースのクエリはシステム全体のパフォーマンスに直結するため、最適な書き方を知ることは重要です。インデックスの効果的な活用方法、適切な結合の選択、そして条件の効果的な書き方など、SQLの最適化に関する具体的な手法を解説します。各SQL文に関する実行計画の結果も掲載していますので、ぜひご確認ください。 なお、Oracle19cとOracle12cでの利用実績がありますが、他のデータベースやバージョンにおいての検証は行っておりません。 新しい情報は随時追加されますので、お楽しみにしてください。 SQLの最適化に関連する基的なアイデア 以下の通りと考えています。 1.インデックスの利用 2.正しいJOINの選択 INNER JOIN、LEFT JOIN、RIGHT JOINなど、

    高効率なSQLクエリの書き方 - Qiita
  • 無料で学ぶ『達人に学ぶSQL徹底指南書 第1版』 - Qiita

    はじめに 『達人に学ぶSQL徹底指南書 第1版』は、CodeZine連載とミック氏ウェブサイトの掲載記事をもとに、加筆・編集されたものです。 CodeZine連載、および、ミック氏ウェブサイトは、どちらもオンラインの無料公開コンテンツです。 今回、「書籍と元コンテンツの対応表」を作成しました。 書籍のために書き下ろされた一部コンテンツや演習問題は見れませんが、その一方、編集で割愛された内容などが含まれるので、書籍以上のことを学べる箇所もあります。 すでに新版『達人に学ぶSQL徹底指南書 第2版』が出ていますが、各テーマは第1版でも大きく変わっておらず、現在でも通用する基的で面白い内容なので、一見の価値はあると思います。 書籍と元コンテンツの対応表 No. 目次 CodeZine連載 ミック氏ウェブサイト テーブル定義 サポートページ

    無料で学ぶ『達人に学ぶSQL徹底指南書 第1版』 - Qiita
  • SQLの実行計画の読み方 |

    今回は、SQLを書く上で特にパフォーマンスに影響のあるSQLの実行計画の読み方について解説します。実行計画はデータベース製品によってさまざまに差異がありますが、ここでは比較的どのデータベース製品でも共通する内容について解説します。 実行計画とは記述したSQLが実際にデータベースの内部でどのように処理されて結果を返すか、その処理方法を記述した情報です。 A5:SQL Mk-2では、SQLエディタで実行計画を見たい SQL の上にキャレットがある状態でメニューから [SQL(S)] – [SQLの実行計画(J)] または、Ctrl+E で表示できます。 表示の仕方はデータベース製品ごとに異なりますが、多くのデータベース製品ではツリー状の情報として表現されます。(このため A5:SQL Mk-2でもツリービューで実行計画を表示します。) ツリーのリーフ(端)から処理が行われ、ルート(根)に向かっ

  • 知って使えるJVMの概要とヒープダンプ取得から解析まで

    ヒープダンプを出力する それでは今からヒープの内容をダンプしてみましょう。何かの内容をディスクに出力することをダンプする、もしくはダンプを取ると言います。よってヒープの内容をディスクに出力したものが「ヒープダンプ」です。 ヒープダンプはツールを使って任意のタイミングでJVMから出力させることもできますし、特定の出来事に対応してJVMに自動的に出力させることもできます。ツールでの出力については連載の後の回で解説します。ここでは特定の出来事に対応して出力する方法を用います。 OutOfMemoryError発生時にヒープダンプを出力するオプション その特定の出来事について解説します。OutOfMemoryErrorおよびHeapDumpOnOutOfMemoryErrorオプションについてすでにご存じの方はプログラムが出てくるところまで文章を読み飛ばしていただいてかまいません。 ガベージコレ

    知って使えるJVMの概要とヒープダンプ取得から解析まで
  • SQLクエリを実行、クエリ結果を可視化できるウェブアプリ「SQLPad」を試してみた | DevelopersIO

    こんにちは!DA(データアナリティクス)事業部 サービスソリューション部の大高です。 SQLクエリをローカル環境でウェブアプリとして実行できるものが無いか少し探していたのですが、「SQLPad」というアプリケーションを見つけたので実際に試してみたいと思います。 SQLPadとは SQLクエリを実行、クエリ結果を可視化できるセルフホスティング型のウェブアプリケーションです。2022年1月現在では以下の15個のデータベースに対応しており、ODBCにも対応しているのでODBC接続を利用すれば、これ以外のデータベースにも接続可能なようです。 Postgres MySQL SQL Server ClickHouse Crate Vertica Trino Presto Pinot Drill SAP HANA Snowflake BigQuery SQLite TiDB 公式サイトでの解説は以下の

    SQLクエリを実行、クエリ結果を可視化できるウェブアプリ「SQLPad」を試してみた | DevelopersIO
    demise
    demise 2022/01/22
  • 社内SQL研修のために作った資料を公開します | 株式会社AI Shift

    こんにちは、Development Teamの三宅です。 先日、社内(AI事業部内)でSQL研修の講師を担当したので、今回はその内容について簡単に共有したいと思います。 はじめに 例年、AI事業部では、新卒エンジニアの育成のためにソフトウェアエンジニア研修を行っております。今年はフルリモートでの実施となりました。研修期間は2週間ほどで、内容は前半が講義、後半が実践(チーム開発)でした。私が担当したのは、講義パートの一部であるSQL研修です。SQLRDBにあまり慣れていない人でも、できるだけ体系的な学びが得られるようにすることを目標に、様々な資料をまとめて提供する方針で準備しました。結果的には、ハンズオン込みで4時間ほどのやや長い講義となりましたが、勉強になったという声も頂けたのでやって良かったと思っています。 研修資料 研修内容 SQL研修の内容は、基的には大学のデータベース講義で

    社内SQL研修のために作った資料を公開します | 株式会社AI Shift
    demise
    demise 2021/07/08
  • SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話 - Qiita

    2020/9/30追記 記事は元々、「SQL記述者全員が理解すべきSELECT文の実行順序のお話」というタイトルで投稿しておりました。 しかし、知見のある方からのコメントと自分でも調べてみた結果、今回紹介している順序はあくまで論理的な処理順序であり、実行順序とは別物ということがわかりました。 誤った知識を布教してしまい申し訳ございません。 2020/9/30のタイミングで、記事のタイトルを「SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話」に変更させていただきました。 はじめに 「SQLといえば、エンジニアが扱うスキル」と思われがちですが、最近はマーケターや営業など、非エンジニアの方もSQLを使って、自らデータを抽出し分析する方が増えてきています。 またエンジニアの方でも、ORM任せでなんとなく理解している状態の方もいるのではないでしょうか? 今回は、そんな方々にこそ

    SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話 - Qiita
  • 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ を読みました - YOMON8.NET

    このを読みました。 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS) 作者:ミック翔泳社Amazon 目次 1部 魔法のSQL 2部 リレーショナルデータベースの世界 自分のレベルと書籍のレベル 自分のレベル 書籍のレベル サンプル・演習の実行環境準備 実行環境 コンテナ起動 pgcliで接続 psqlで接続 コンテナ削除 SQLファイルダウンロード 所感 すぐに使える内容もいっぱい 読みやすい 2部の理論難しい 2021/11/24 所感追記 目次 まず目次から。2部構成になっていて、第1部は主に演習をしながら進めていくタイプの内容で、第2部は主に読み物としてリレーショナルデータベースの世界を覗くものになります。 1部 魔法のSQL 1 CASE式のススメ 2 必ずわかるウィンドウ関数 3 自己結合の使い方 4 3値論理とNULL 5

    達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ を読みました - YOMON8.NET
  • Sequel Proを超えるGUIツールが出てきたぞ

    悲報 2019年6月26日現在、TeamSQLのサポートがなくなってしまったようでダウンロードできなくなくなりました。。 TeamSQL has retired and is not available for download anymore. 今までSequel Proを重宝してきましたが、それを超えるGUIツールが出てきました。 その名も、TeamSQL 現状サポートしているものだけでもかなり豊富 今後、elasticやmongoDBにも対応されるようです。 機能 クエリ保存 履歴保持 ファイル出力 抽出した結果をボタン1つでcsvやjson形式に保存可能。 共有 データをエクスポートしなくても共有が可能。 グループの作成が可能なため、特定のユーザー同士で簡単に共有ができるとこがメリット。 可視化 様々なチャートでクエリの可視化が可能。 そのままイメージとして保存も可能。 テーマ選択

    Sequel Proを超えるGUIツールが出てきたぞ
  • MySQLのクエリの良し悪しはrows_examinedで判断する - かみぽわーる

    仕事やらなんやらでMySQLのクエリの良し悪しを判断する必要があるとき、EXPLAINの内容だけだとどのぐらい良くなったり悪くなったのか分からないので SET long_query_time = 0; してrows_examined (そのクエリでrows_sent行の結果を返すために何行に触ったのか)も一緒に提示するようにしている(少なくともMySQL 5.7時点ではrows_examinedはslow_query_logでしか確認できないはずperformance_schemaが有効ならevents_statements_historyやその仲間たちで確認できるとのこと*1 MySQL :: MySQL 5.6 リファレンスマニュアル :: 22.9.6 パフォーマンススキーマステートメントイベントテーブル)。 例: 上の例のBeforeは、もともとDBAが書いた温かみのあるSQLでO

    MySQLのクエリの良し悪しはrows_examinedで判断する - かみぽわーる
  • Progate(プロゲート) | Learn to code, learn to be creative.

    SQLはデータの管理や分析を行うデータベース言語です。 今回のレッスンではSQLの基的な使い方を学習します。

    Progate(プロゲート) | Learn to code, learn to be creative.
    demise
    demise 2018/02/11
  • 非エンジニアが最速でSQLをマスターする方法 - Gunosy Tech Blog

    こんにちは、データ分析部の石塚です。 Gunosyではエンジニア以外の職種でもSQLを叩いて自らデータを集計・分析するという習慣と全社員が各サービスのログ*1に触ることができる環境があります。 例えば、ユーザー獲得を担っているプロモーションチームはエンジニアが0名のチームなのですが、実際にSQLを叩いています。 それによって、自分たちの獲得したユーザーはどのような行動をしているのかを確認したり、分析することができています。 これはGunosyのみの事例ではなく、AWSのRedshiftやAthena、GCPのBigQueryが台頭してきたおかげで、どの会社も低コストにログをSQLで集計・分析できる基盤が整ってきています。 個人的にはアプリやウェブの業界で働くマーケターにはSQLは必須の知識と言える時代になってきたと感じています。 そこで今回は特別プログラミングなどの経験が無い人でも、SQL

    非エンジニアが最速でSQLをマスターする方法 - Gunosy Tech Blog
  • なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)

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

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

    (注:2017/10/16、いただいたフィードバックを元に翻訳を修正いたしました。) (注:2017/10/11、いただいたフィードバックを元に翻訳を修正いたしました。) データベースのドキュメントで分離レベルを目にして、軽く不安を感じつつ、あまり考えないようにしたことはないでしょうか。トランザクションの日常の使用例できちんと分離について言及しているものはほとんどありません。多くはデータベースの初期設定の分離レベルを利用しており、後は運頼みです。しかし、来、理解しておくべき基的なトピックであり、いくらか時間を投入してこのガイドの内容を学習すれば、もっと快適に作業できるようになるでしょう。 私はこの記事の情報を学術論文、PostgreSQLドキュメンテーションから集めました。分離レベルの 何たる かだけでなく、適用の正確さを保持しつつ最大速度で使うにはいつ使うべきか、という疑問に答えるべ

    SQLトランザクション分離 実践ガイド | POSTD
  • SQLZOO

    Tutorials: Learn SQL in stages 0 SELECT basics Some simple queries to get you started 1 SELECT name Some pattern matching queries 2 SELECT from World In which we query the World country profile table. 3 SELECT from Nobel Additional practice of the basic features using a table of Nobel Prize winners. 4 SELECT within SELECT In which we form queries using other queries. 5 SUM and COUNT In which we ap

  • SQLの苦手意識を克服できる!基礎から学べるサービス9選

    現役ITエンジニアの方の中には、SQLに対して苦手意識を持っている方もいらっしゃるのではないでしょうか。 SQL自体は、ANSI(米国国家規格協会)や、ISO(国際標準化機構)で言語仕様の標準化が行われているので、一度マスターしてしまえば、製品によって多少の違いはあれど、基的にどのDBでも同じように利用することが可能です。 つまり、実はエンジニアにとって非常に嬉しい言語なのです。 今回は、苦手意識を持たれている方も気軽に始めることができて、かつ必要な情報を網羅できるオススメのサイトを9つご紹介します。 このニュースを読んだあなたにオススメ ノンプログラマーWebサービスやツールを作るまでの備忘録20選 無料で学べる人気プログラミング学習サイト21選 プログラミングするならこれ!無料で使えるおすすめのテキストエディタ6選 SQLが学べるサービス9選 1.ドットインストール http://

    SQLの苦手意識を克服できる!基礎から学べるサービス9選
  • 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
  • https://qiita.com/kantomi/items/07a691e19725e3cd3c4d