タグ

SQLに関するs_ryuukiのブックマーク (131)

  • クエリのパフォーマンスチューニングの第一歩。実行計画や統計情報について入門する

    SQL実行の流れ まずはSQLがどのような流れで実行されるのかを見ていきます。 SQL実行の流れは大まかに捉えると以下のようになります。 パーサ パーサでは、ユーザーから送信されたクエリを受け取り、その文法的な正確さを検証します。SQLクエリが正しくフォーマットされているか、必要な構文要素が全て含まれているかをチェックし、例えばFROM句で指定されたテーブルが存在するかどうかも確認します。 文法的なエラーがある場合、例えばカンマの欠落や存在しないテーブルの参照など、クエリはエラーとして返されます。 エラーがない場合は、クエリは「抽象構文木」というデータ構造に変換されます。これにより、データベースはクエリをより効率的に解析し、次の処理ステップに進めることができます。 オプティマイザ SQLクエリがパーサを通過した後、次にクエリの最適化を行うのが「オプティマイザ」です。オプティマイザの主な役割

    クエリのパフォーマンスチューニングの第一歩。実行計画や統計情報について入門する
  • もう人間がクエリを書く時代じゃない!SQLクエリの組み立てを自動化するSlack botを開発・導入しました - Pepabo Tech Portal

    こんにちは。SUZURI事業部の@kromiiiと申します。 私のメインの業務はWebアプリケーションの開発ですが、大学院時代のスキルを活かして並行してデータ分析業務も行っています。 データ分析業務ではデータベースのクエリを書くことが多いのですが、私自身SUZURI事業部に配属されたばかりで、テーブルの名前やリレーションを覚えるのが大変でした。そこでクエリの設計を自動化するツールをSlackに導入しました。 その名も tbls-ask bot です。どのようなものか先に見てみましょう。 ユーザーはSlackでメンションする形で、どのようなクエリを実行したいのか自然言語で入力します。 メンションされるとSlack botが起動し、どのDBスキーマを利用するかを尋ねます。 ユーザーがDBスキーマを選択すると、自然言語からSQLクエリを生成し、Slackに返答します。 今回はパブリックに公開する

    もう人間がクエリを書く時代じゃない!SQLクエリの組み立てを自動化するSlack botを開発・導入しました - Pepabo Tech Portal
  • サブクエリの書き方を2万文字弱かけてすべて解説する

    これはなに ども、レバテック開発部のもりたです。 今回はSQLのサブクエリについてまとめます。仕事でクエリを書く際、サブクエリは頻出の構文だと思うんですが、同時にサブクエリの書き方を完全に理解しているよという人は案外少ないのではないでしょうか?[1] 実際、MySQLの公式ドキュメントを見ると12ページくらいを割かれており、意外と奥深いのがサブクエリです。使いこなせると便利ですし、何よりちょっとSQLのコツみたいなのがわかって面白いよ、ということで記事にしてみました。 前提 この記事は以下の前提を含んでいます。 環境 MySQL8.0系 読者の知識 なんとなくサブクエリが書ける けど相関サブクエリとかになると「あーっ」つってGoogle meetを閉じてしまうくらいのレベル感 記事のボリューム 18,000文字 おれの卒論が20,000文字だった マサカリ 間違ってたら投げてくれ〜〜 それ

    サブクエリの書き方を2万文字弱かけてすべて解説する
  • GitHub Copilotで効率的にSQLを書くコツ - Retty Tech Blog

    Rettyプロダクトマネージャーの松田です。 プロダクトの現状把握や施策効果の分析など、さまざまなタイミングでBigQueryのSQLを書くことがあります。 Rettyでは昨年末にGitHub Copilotを導入したので、それに合わせてSQLの作成にもGitHub Copilotを使い始めました。 使いたいテーブルが偏っていたりテーブルの設計が似ているものが多く毎回同じようなクエリを書いていましたが、GitHub Copilotの導入で体感としては半分ぐらいに作業時間を短縮できたと思います。 まだまだ不十分だと感じることもありますが、現時点でも十分に活用できているので、GitHub Copilotで楽にSQLを書くときのコツをいくつかまとめてみました。 ※Visual Studio Codeと組み合わせて使う前提で書いています。(導入方法が公式から出ています) 1. GitHub Cop

    GitHub Copilotで効率的にSQLを書くコツ - Retty Tech Blog
  • C#でGraphQL(なぜホットチョコレート?!) - Qiita

    最近、C#界隈でもGrphQL案件が増えてきたので調査してみました。 GraphQLサーバ ふざけた名前のホットチョコレート(Hot Chocolate)?!を使ってみたいと思います。 Microsoftも紹介しているのできっと大丈夫でしょう! 準備 1. VisualStudio2022で空のASP.NETCoreプロジェクトを作成作成します。 2. NugetでHotChocolate.AspNetCoreを追加します。 今回テストしたスキーマ 今回は以下のスキーマを定義したいと思います。 Authorとそれに紐づくBookを想定(1対多) 今回はQueryだけ type Query { authors: [Author] books: [Book] } type Author { id: Int! name: String! books: [Books] } type Book {

    C#でGraphQL(なぜホットチョコレート?!) - Qiita
  • ChatGPTのGPT-4Vを使ってSQL文を画像から作成する - Taste of Tech Topics

    igaです。 ポケモンsleepを継続していますが、カビゴン評価がマスターになれません。 ChatGPTが見たり、聞いたり、話したりできるようになる、と言われている「GPT-4 with vision (GPT-4V)」が使えるようになったので、早速使ってみたいと思います。 openai.com 今回は、データベースのテーブル関連図を画像ファイルでもらった想定で、画像からテーブルのDDLが生成できるかを確認してみます。 やりたいこと 以下のような、テーブルの関連図とサンプルデータが描かれた画像ファイルをもらいました。 この画像ファイルをChatGPT-4に渡して、SQLのDDLが生成できるか確認します。 画像を解釈できるか確認する いきなりDDLを作らせる前に、まずは画像ファイルに書かれたテーブル構造を、マークダウンで出力してもらいます。 プロンプトの入力欄の左に絵のアイコン(画像の赤で囲

    ChatGPTのGPT-4Vを使ってSQL文を画像から作成する - Taste of Tech Topics
  • マリオカートのER図について考える - Qiita

    さて、 今回はオフィスにて「ER図とは?」を学ぶランチを開催しました🍔 ゲームDBなんて考えたことが無いので、ER図アウトプットに至るまでを記事に残してあげようと思います。 今回は、リリース時に同僚みんなで遊んでいたスマホゲーム「マリオカート ツアー」を使って マリカーのフレンドランキング画面を出すために必要なDB設計を考えます。 軽いランチなので、事前に参加者が通勤中の電車内で作成できるくらいのボリュームを目指しました。 データベースとは・・・?という初心者メンバーでもイメージしやすいように。 こういうアウトプットは初めてですが、徐々に慣れていきたいです。 【開催概要】 ・参加者:ファッションIT企業のPMエンジニア、事務・・・などなど ・開催時間:1時間(事前アウトプット作成:20〜30分程度) ・その後:SQLを初心者と書いてみるランチも実施しました。 →BigQueryがSQ

    マリオカートのER図について考える - Qiita
  • 【SQL】ちょっとしたパフォーマンスチューニングまとめ - Qiita

    SELECT table_a.id, table_a.name FROM table_a INNER JOIN table_b ON table_a.id = table_b.id; メリットとしては、 どちらかのテーブルのid列のインデックスを使用可能 サブクエリがないことで中間テーブルが作成されない しかし、インデックスがない場合はEXISTSの方が良い場合があります ソートの回避 SQLでは暗黙的にソートが発生する演算が存在するので、 パフォーマンスにも影響するため、ソートが必要ない場合は考慮する必要があります ソートが発生する演算 GROUP BY句 ORDER BY 句 集約関数(SUM, COUNT, AVG) DISTINCT 集合演算子(UNION, INTERSECT, EXCEPT) ウィンドウ関数(RANK, ROW_NUMBER 等) メモリ上でのソートだけではなく

    【SQL】ちょっとしたパフォーマンスチューニングまとめ - Qiita
  • GitHub - Wisser/Jailer: Database Subsetting and Relational Data Browsing Tool.

    2024-04-18 DDL scripts for creating database objects can now be generated thanks to an integration of the Liquibase tool. This makes it possible to create subset databases from scratch using only on-board means. 2023-02-03 Thanks to deep analysis of statements, the SQL console can now relate the result of queries to the source tables and display them accordingly. In addition, this technique also a

    GitHub - Wisser/Jailer: Database Subsetting and Relational Data Browsing Tool.
  • Data Engineering Study #20 "Introduction to Data Analytics with SQL" Book

    Data Engineering Study #20「10年戦えるデータ分析入門」回・前半の発表資料です。

    Data Engineering Study #20 "Introduction to Data Analytics with SQL" Book
  • EF Coreで正しくUPDATEする方法 - Qiita

    EF CoreのUpdateは結構勘違いされている 海外オフショアの方が作成したソースコードのメンテナンスをしているのですが、EF Coreでのレコード更新処理がとても無駄の多いものになっていました。恐らく、EF Coreに対する根的な勘違いがあるように思います。 正しい理解の促進のためにこの記事を書きます。 主なポイントは次の2つです。 更新の為にDbContext.Update(entity) を呼び出す必要は(必ずしも)ありません 更新する前にエンティティをDBから取得する必要は(必ずしも)ありません 無駄の多いソースコード 以下のコードは正しく動作しますが、無駄が多く、ある意味間違っています。 // DBからエンティティを取得 var article = await _context.Article.FindAsync(model.Id); // 入力値をエンティティに反映 ar

    EF Coreで正しくUPDATEする方法 - Qiita
  • sqlfmtによって何を解決したいのか

    これは何 データ基盤の開発にsqlfmtを導入することについて考えてみたものです。 (チームにsqlfmtを導入するために書いてるものになります) sqlfmtによってどのような課題を解決したいのか 大きくはこれに集約されるかなと思います。 ではスタイル周りにある開発者生産性を阻害する要因とはどのようなものかというと: 読みづらいSQLによるバグの発見の遅れ ロジック周りには関係のない箇所のレビューをする必要性 SQLスタイルのスタンスの違いによる衝突 というものがあります。 これをsqlfmtならどう解決できるかを紹介します。 sqlfmtならどう解決できるか 読みづらいSQLによるバグの発見の遅れ これはそもそもformatterを導入していないことにより生じるものを想定しています。 やたらと長い一行、スペースの無い濃密な一行、揃わないインデント、無意味な改行...などにより、不用意に

    sqlfmtによって何を解決したいのか
    s_ryuuki
    s_ryuuki 2023/05/14
  • SQLの実行計画の読み方 |

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

  • ChatGPTで作るSQLがヤバい※Oracleの話多め - Qiita

    n番煎じ、今更ながら…。 ChatGPTは過去遊びでしか使ったことがなかったのですが、 今、超長文SQL群を改修してまして、何重にもなった副問合せと集計関数を読み解くのに疲れて…ChatGPTに手を出しました。 そして、 え!!ChatGPTやばい!! 介護は必要だけどすぐ形にしてくれるしなんなら私より知識あるわ!! 只今、職を失いました!! ってなったので、この衝撃を書き残しておこうと思います。 やりたいこと 作るSQLの要件はざっくり、 dba_hist_sysstatから、physical readsなど各統計情報のvalueの増分値を取得する 統計情報種別毎・1日毎に、1ヶ月間集計 日時判別のために、dba_hist_snapshotと結合する valueには累積値が入っている。ただし、インスタンス再起動があるとリセットされる。 つまり、「累積だから」と直前のスナップショットのva

    ChatGPTで作るSQLがヤバい※Oracleの話多め - Qiita
  • SQL50本ノックをSQLite3 Fiddleで試す - Gマイナー志向

    Software Design「データベース速攻入門」に「SQL50ノック」が掲載されました - LIVESENSE ENGINEER BLOG 最近では、postgres-wasmなど、WebブラウザでDBを動かせるようになってきており、もう少しすれば、WebAssemblyを使って、ブラウザですぐにノックを始められるようになるかもしれません。もしも、また何年か後に記事を更新する機会があれば、試してみたいですね。 Web上からすぐに試せるpostgres-wasmはPagilaのデータを持っていくことが現時点で出来なさそうだったものの、SQLite3 WebAssemblySQLiteのデータを持っていけました。SQL50ノックを気軽に試せそうです。 手順1 sakila-sqlite3をダウンロード まずgithubからsakila-sqlite3をダウンロードします。 gith

    SQL50本ノックをSQLite3 Fiddleで試す - Gマイナー志向
  • データベース速攻入門 ~モデリングからSQLの書き方まで

    このの概要 書は『Software Design』のデータベースに関連する特集記事を再収録した書籍です。 プロダクトに依存しないデータモデリングの基をはじめ,基命令文はもちろん,複雑な集計を行うSQLの書き方,MySQLを扱う際に必須となるデータ型/インデックス/トランザクション/デッドロック/レプリケーションの5大基機能を解説しています。 さらに,AWSの人気データサービスであるAmazon RDSとAmazon DynamoDBの使い分けポイントも紹介。 現場ですぐに役立つデータベースの知識が身に付きます。 こんな方におすすめ データベースについて基礎から勉強したい方

    データベース速攻入門 ~モデリングからSQLの書き方まで
  • 個人的に使っているDapper の使うときの小技とか - Qiita

    DataBase にアクセスする処理を使うとき、便利なのがMicro O/R Mapper のDapper です。 普段、あまり複雑な処理はせず、SQL 部分は手書きできる程度の複雑さで、読み込みはクラスにマッピングしてくれればいいと思っているので、Dapper はまさにピッタリで、とても気に入っています。 これは、Dapper を使うときにもう一声と感じる部分を補うためにやっていることのまとめです。 1.Dapper とは? データベースに格納されている値を読み書きする際に、C# などでデータを格納するクラスのメンバーとのマッピングをしてくれるO/R Mapper の一種です。 .Net でよく使われている、Entity Framework と比較するとSQL を内部で生成するクエリビルダなどの機能が省略されており、マッピングに特化したシンプルな構成のため、オーバーヘッドが少なく高速に動

    個人的に使っているDapper の使うときの小技とか - Qiita
  • データベース研修(データベース基礎編)【ミクシィ22新卒技術研修】

    22新卒技術研修で実施したデータベース研修(データベース基礎編)の講義資料です。 動画:https://youtu.be/dseGQ2MZF1U SQL演習編 https://speakerdeck.com/mixi_engineers/2022-sql-training

    データベース研修(データベース基礎編)【ミクシィ22新卒技術研修】
  • あなたの遅延はどこから? SQLから! 〜患部に止まってすぐ効くSQLレビューチェックリスト 年初め特大サービス号〜 - ANDPAD Tech Blog

    あけましておめでとうございます! 今年は異世界放浪メシのアニメが放送されるらしいので楽しみなバックエンドの原田 (tomtwinkle)です。 内部で運用しているSQLレビューチェックリストの一部を抽出し思いつきで追記して行った結果、結構な分量になってしまいました。 暇な時でも流し読みして頂けるとありがたいです。 Motivation SQLレビュー観点 大きくSQLが変更される修正の際にはEXPLAINをレビュー内容に加える 検索のキーにINDEXを使用しているか SQL発行回数がN+1(1+N)の構造になっていないか サブクエリを利用したSQLはパフォーマンス要チェック Viewの利用は基的に禁止 CROSS JOINは禁止 WHERE句で十分に絞った検索をしているか 必要なcolumnだけSELECTしているか レコード数だけ必要な場合にCOUNT用のSQLを発行しているか 集計関

    あなたの遅延はどこから? SQLから! 〜患部に止まってすぐ効くSQLレビューチェックリスト 年初め特大サービス号〜 - ANDPAD Tech Blog
  • Semgrep で SQL Injection と戦う #1

    Semgrep で SQL Injection と戦う #1 Semgrep はソースコードの静的解析ツールです。どんなものか知りたい方は .NET でも .NET でなくても静的セキュリティコード検査 (Semgrep 編) を参考にしてください。 タイトルの通りです。Semgrep の公式ルールは .NET の O/R マッパーの Dapper に対応していないので、Dapper 用のルールを書いてみます。 途中経過とかどうでもいい! 使えればいいんじゃ! って人は、読み飛ばしてページの下までスクロールしてください。 実際のところ、この手の SAST ツールはちょっとコードの書き方を変えただけで検出できなくなることが多いです。現場によっては脆弱性がたくさんあっても、検出できないことも多いです。自分たちの現場に合わせたルールを整備し続けるのが大事だと思います。 ルールを作る 少しずつルー

    Semgrep で SQL Injection と戦う #1