タグ

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

  • 【機能強化】RDBMS/CSV/TSV/LTSVクライアントであるsqluvをhttps/s3/圧縮フォーマットに対応させ、カラースキームを追加

    【機能強化】RDBMSCSV/TSV/LTSVクライアントであるsqluvをhttps/s3/圧縮フォーマットに対応させ、カラースキームを追加 by nao · 2025年3月22日 前書き:大幅に機能追加 nao1215/sqluvは、2週間前に「【Gosqluvコマンド:DBMS用のTUI + CSV/TSV/LTSVにSQLを実行可能【開発背景や使い方、生成AIの活用】」に記事で紹介しました。この記事に対する反応がそこそこあったので、「これはチャンスだ」と考えて、大幅に機能追加/バグ修正をしました。 普段であれば機能追加時に記事を書きませんが、今回は利便性がかなり上がったので、もう一度記事を書くことにしました。 前提:sqluvが提供する機能 v0.3.0(2025.03.22)時点で以下の機能があります。 RDBMSMySQL/PostgreSQLSQLite3/SQL S

    【機能強化】RDBMS/CSV/TSV/LTSVクライアントであるsqluvをhttps/s3/圧縮フォーマットに対応させ、カラースキームを追加
  • COUNT(*), COUNT(1), COUNT(expr) の違いを SQL 標準から理解する

    Disclaimer: 筆者は Snowflake で Senior Performance Engineer として働いていますが、この記事は公式の見解ではなく、あくまでも個人的な内容になります。 Intro COUNT(*), COUNT(1), COUNT(expr) の違いについて、おそらく NULL の扱いだったり、パフォーマンスだったりが違うんだろうな、という経験的に得られた知識があると思いますが、これを ANSI SQL 標準 (ISO/IEC 9075-2:2016) を元に体系的に整理します。 ANSI SQL における COUNT 集約関数の定義 ISO/IEC 9075-2:2016 の "4.16.4 Aggregate functions" にて、COUNT (および単一引数の集約関数) は下記のように定義されています。 COUNT(*) は集約内の行数を返す そ

    COUNT(*), COUNT(1), COUNT(expr) の違いを SQL 標準から理解する
    s_ryuuki
    s_ryuuki 2025/02/24
  • オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank

    こんにちは。MySQLは秋の季語とする一派が世に存在していることを知り、私もMySQLに関わる記事を書いてみようと筆を取ることにしました。 さて、リレーショナルデータベースをバックエンドとするWebアプリケーション開発において、特定の条件に合致するレコードがN件だけ存在するかどうかを確認するロジックは頻出といえます。プログラマとして一度は書いたことがあるのではないでしょうか? この記事ではそのような件数カウントを行うためのクエリが引き起こした性能劣化と、その改善アプローチについて紹介していきます。 なお、記事の内容はMySQLを前提としており、アプリケーションコードの例はRuby on Railsを用いますが特別な前提知識は必要ありません。コードの雰囲気だけ感じ取っていただければと思います。 ありがちなコード if query.count == n の問題 冒頭で述べた通り、特定の条件に

    オイ、そこのSELECT COUNT。余計な数え上げに意味なんかねえ - inSmartBank
    s_ryuuki
    s_ryuuki 2024/10/11
  • クエリのパフォーマンスチューニングの第一歩。実行計画や統計情報について入門する

    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だけ var builder = WebApplication.CreateBuilder(args); builder.Services .AddSingleton<Repository>() .AddGraphQLServer(

    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-07-04 Data can now also be exported as structured JSON and YAML files. 2024-06-26 A dark UI theme has been introduced that improves readability in low light environments. 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 T

    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