タグ

sqlに関するrryuのブックマーク (18)

  • WITH句てんこもりのSQLをデバッグする - エムスリーテックブログ

    巨大なSQLの出力が意図と違っていたり違っているかもしれないとき、どこから確認しようか頭を抱えてしまうことってありますよね。せめて多段階で作られているたくさんのCTE (WITH句)、これらが一つずつどんな表を出力しているのか簡単にのぞけたら手がかりもあるのだけれど⋯ 今回はそれをわりと現実的な手間でできるようにする小技です。エムスリーエンジニアリングループUnit1(製薬プロモーション)/Unit9(治験臨床研究支援)エンジニアの三浦[記事一覧 ]です。 魔法の一行 デバッグを実現する一行 We are hiring 魔法の一行 SQLの最後に -- */ という無意味なコメント行を付けておいてください。ひと目見て分かる通り、まったく無意味です。ところがこれがあるだけで、デバッグのときにこんなことができるようになります―― デバッグを実現する一行 次のようなCTEの大行列があるとします

    WITH句てんこもりのSQLをデバッグする - エムスリーテックブログ
    rryu
    rryu 2025/06/18
    最小の手間でデバッグプリントを入れる方法という感じ。
  • SQL ORDER BY Column Numbers and Expressions :: Noboru Saito's page

    BackgroundAn issue with specifying column numbers in ORDER BY gained attention through tom__bo’s article about behavioral changes in prepared statements in 8.0.22. In the article, the following was mentioned: Details For a prepared statement of the form SELECT expr1, expr2, … FROM table ORDER BY ?, passing an integer value N for the parameter no longer causes ordering of the results by the Nth exp

    SQL ORDER BY Column Numbers and Expressions :: Noboru Saito's page
    rryu
    rryu 2024/05/30
    確かに式とプレースホルダが絡むとややこしい。文法的には整数即値の場合のみ列番号と解釈されるということなのだと思うが。SQL-99でORDER BYに式が指定できるようになったので、それで廃止されたのだろう。
  • 「SQL」の読み方論争に決着? 「しーくぇる」vs「えすきゅーえる」にPostgreSQLがケリ/冠詞にはくれぐれも注意【やじうまの杜】

    「SQL」の読み方論争に決着? 「しーくぇる」vs「えすきゅーえる」にPostgreSQLがケリ/冠詞にはくれぐれも注意【やじうまの杜】
    rryu
    rryu 2024/04/11
    冠詞で読み方がバレるのおもしろい。なので「an SQL」に統一するという話。
  • 3値論理

    なぜ「= NULL」ではなく「IS NULL」と書かなくてはならないのか? これは、気になっている人も多いはずです。まだ SQL に不慣れな頃、ある列が NULL である行を選択しようとして、 SELECT * FROM table_A WHERE col_1 = NULL; というクエリを書いてしまい、エラーになったり思い通りの結果が得られなかった、という経験は、ほぼ全ての人が持っているでしょう。ちょうど C言語や JAVA を習い始めのころに「if (a = 5)」と書いてしまう間違いとよく似ています。最初は、言語仕様の汚さにぶつぶつ文句をいいながらも、そのうち「IS NULL」という書き方に慣れてしまって、疑問を持たなくなります。 でもどう考えても奇妙な書き方ですよね。こんな素直でない書き方をしなくてはならないということには、やはりそれなりの理由があるのです。今からその理由を説明しま

  • DBサーバでUPDATE/DELETEを打つ安心感を高める

    近年はDBサーバで直接UPDATE/DELETE文を発行する場面はかつてより減ったように感じますが、引き出しとして持っていて損はないと思ったので私が普段やっている方法をメモしておきます。 プロトタイピングだったり、開発環境でも有効なので手癖にしておくのは有効だと考えます。 MySQLを例に書いていますが、対象のRDBMSは特に限定されません。 1. 対象のレコードを下見する まずはこれから更新する対象を見ておきましょう。 mysql> select * from books where id=1; +----+-----------+-----------------+-------+ | id | author_id | title | price | +----+-----------+-----------------+-------+ | 1 | 1 | Learning UPDA

    DBサーバでUPDATE/DELETEを打つ安心感を高める
    rryu
    rryu 2023/02/22
    もうupdateとdeleteは先にselectしてwhere句の正しさを確認してそれを書き換える方法でしか実行しない。直に実行すると結果が正しいかどうか分からないので結局selectで確認する訳で、それなら先に実行した方が良い。
  • SQL改善で処理時間を約98%カットできた話 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    SQL改善で処理時間を約98%カットできた話 - Qiita
    rryu
    rryu 2022/09/02
    INが遅いのではなくグループ化されていないカラムを参照しているHAVINGのEVERY()関数が遅いのだと思う。
  • バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~

    速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)

    バッチ処理にバインド変数はもうやめません? ~|バッチ処理の突発遅延を題材にして考えてみる~
    rryu
    rryu 2020/03/17
    定数で書けるものをバインド変数にする意味はないというのは分かるが、条件がたまたまテーブルスキャンの前半にマッチする時はパフォーマンスが出ているように見えるだけという事案な気がする。
  • SELECT文で本番環境を落としたお話 - Qiita

    結果はすぐに帰ってきました。確か2行程度だったと思います。 続けてさらに SQL を実行しようとしました。しかし、ここで同僚から「ソースコードでわからないところがあるんですが…」と声をかけられました。 こちらは急ぎの作業ではなかったので、ターミナルをそのままにして同僚の質問に回答することにしました。 そして約10分後…。 $\huge{「システムがダウンしてるー!」}$ 番障害となりました。 何が悪かったのか **「トランザクションをかけて SELECT 文を打ったお前が悪い」**ということになりました。 何が起きていたのか ログからシステムの動きを確認したところ、あるスレッドで user_setting テーブルをロックしようとしていたことが分かりました。具体的には、以下の SQL が発行されていました。 この SQL には、ロックモードの指定がありません。この場合、PostgreSQ

    SELECT文で本番環境を落としたお話 - Qiita
    rryu
    rryu 2019/12/26
    トランザクション張ったまま離席とか死亡フラグでしかない。
  • あの夏の抽出件数を僕はまだ忘れていない - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? これから読む君へ、さきにひとつ謝っておこう。 華々しい番やらかしの告発が連なるこのカレンダーにおいて 今夜語る事件はあまりにも些細で地味なものだ。 そうさ、些細だが 1円を笑うものが1円に泣くように 1行を笑うものは1行に泣く。 データってやつに裏切られたくなかったら しっかり両目を開いて見つめるんだ。 むろん、ブルーカット眼鏡も忘れずにな! ※年数がたっていて記憶がおぼろげなのをいいことに だいぶフィクション感てんこ盛りでお送りしたいと思います。そして小説風に便乗する輩。 あの夏 当時ぼくは零細SESの中でも、体育会系の空気を馬鹿に

    あの夏の抽出件数を僕はまだ忘れていない - Qiita
    rryu
    rryu 2019/12/24
    GROUP BYしてるやつの中身とかLIMIT 1付けて無理やり一対一対応にしているしてるやつとかは件数ヨシ!だけしていると中身が違っていて死ぬという。
  • #API1st 勉強会

    upmeetup.info bot @upmeetup 12/02(金) [参加37人/定員100人]bit.ly/2gAXXmQ【APIファースト開発勉強会 - MVCは正しくない!】 #API1st 2016-11-23 22:44:11

    #API1st 勉強会
    rryu
    rryu 2016/12/05
    SQLおじさんのあの手法をソリューションとして売っていたとは。
  • 分析SQLのコーディングスタイル - クックパッド開発者ブログ

    SQL、書いてますか? こと大規模データ処理の分野においてはSQLはもはや標準インターフェイスであり、 分析やらバッチやらに関わっている皆様は日々大量のSQLクエリーを生産していることと思います。 そこでちょっと気になるのが、 SQLのコーディングスタイルってどうするのが一般的なんだっけ……? という点です。 イマドキはSQLなんてO/R mapperに吐かせることが多いからなのか、 それともコードを広い範囲で共有することがそもそもないからか、 SQLのコーディングスタイルについて見聞きすることは他のプログラミング言語に比べるとだいぶ少なく、 いまいち決定版と言えるスタイルがないなと感じています。 そんなわけで日は、SQLのコーディングスタイルについての意識を活発化させるべく、 クックパッドでわたし(青木)が使っているコーディングスタイルから特徴的な点を紹介したいと思います。 特に、分析

    分析SQLのコーディングスタイル - クックパッド開発者ブログ
    rryu
    rryu 2016/11/09
    集計する系のSQLはなにげに長大なCASE WHENが出現しやすくてカラムの区切りが分りづらくなって困るのだが、前カンマのカンマを区切りの目印に使うという発想はなかった。
  • O/Rマッパーによるトラブルを未然に防ぐ

    ORMがトラブル起こすから嫌い」なんじゃなくて、「ORMが起こすトラブルが解決できないから嫌い」ってのがほんとのところじゃない?だったら解決方法を知ればいいんじゃね?というお話。「N+1問題」もろくに知らずにORMを批判せんでほしい。

    O/Rマッパーによるトラブルを未然に防ぐ
    rryu
    rryu 2014/12/23
    結局どういう問い合わせをするとどういう結果が返ってくるかはSQLが分からないと分からないからO/Rマッパーを使うにあたってもその知識は必要ということなんだな。
  • とある診断員とSQLインジェクション

    第一回 社内勉強会 PHP Application Security Checklist に学ぶ PHP セキュリティ (Excerpt)

    とある診断員とSQLインジェクション
    rryu
    rryu 2014/05/26
    文字列と数値を演算すると数値側に揃えられて結果がおおむね0になるというのが痛いところ。
  • Schema for a multilanguage database

    rryu
    rryu 2013/07/31
    多言語対応のデータベーススキーマ。これなら一応テキストも検索条件にできるのか。JOINがめんどくさいけど。
  • Nullのはなし(up用)

    Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...

    Nullのはなし(up用)
    rryu
    rryu 2013/07/27
    coalesce()なんていう関数があるのか。
  • サロゲートキーと「とりあえずID」の違い - 設計者の発言

    サロゲートキー(代理キー)は慎重になされる限り、有用なテクニックである。いっぽう、すべてのテーブルに機械的にIDを置く「とりあえずID(IDリクワイアド)」の設計スタイルでは、複雑なデータ要件を扱った途端にひどい目にあう(とくに保守担当者が)。両者の違いをしっかり理解しておこう。 何でもいいのだが、ここでは生産管理システムで見かけそうなシンプルなモデルを使って説明しよう(図1)。「作業区・品目」は、それぞれの作業区で生産可能な品目の組み合わせと、その品目を扱った際の生産性(時間あたり生産数)の管理簿である。 <図1> [工程]工程id,工程名,扱い単位 +   ̄ ̄ ̄ |   001 切削  個 |   002 加工  m | └―∈[作業区]工程id,行番,作業区名,標準生産性 +    ̄ ̄ ̄ ̄ ̄ ̄ |    001 01  切削1号 1000/hr |    001 02  切削2号 2

    サロゲートキーと「とりあえずID」の違い - 設計者の発言
    rryu
    rryu 2013/03/22
    サロゲートキーというからにはaltenate keyもあるはずなので、ユニーク制約は{id},{作業区id,工程id,品目id}の2つになるはず。
  • SQLアンチパターン「健忘症的サロゲートキー」の提案 - 極北データモデリング

    SQLアンチパターン 作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型購入: 9人 クリック: 698回この商品を含むブログ (46件) を見る書の著者はサロゲートキーに対して消極的なのだから、「サロゲートキーの使い方がおかしい」とか言うのはお門違いなのかもしれないが... 健忘症的サロゲートキー 「SQLアンチパターン」第3章の記述を総合すると、著者はサロゲートキーについて以下のように考えていると思う。 自然キーの一意性・不変性が当てにならない場合に「自然キーの変更の影響を受けないようにする」という目的でサロゲートキーを導入する。 自然キーの重複を防ぐために、自然キーにUNIQUEインデックスを振ることを推奨する。 自然キーの代わりにサロゲートキーを外部キーにする。自然キーは他のテーブルに転

    SQLアンチパターン「健忘症的サロゲートキー」の提案 - 極北データモデリング
    rryu
    rryu 2013/03/21
    従属テーブルのサロゲートキーは要らない場合が多いというだけで外部キーとして主テーブル側のサロゲートキーを入れることまでは否定していないような。
  • SQLアンチパターン「IDリクワイアド」の再検討 - 極北データモデリング

    SQLアンチパターン 作者: Bill Karwin,和田卓人,和田省二,児島修出版社/メーカー: オライリージャパン発売日: 2013/01/26メディア: 大型購入: 9人 クリック: 698回この商品を含むブログ (46件) を見る話題のSQLアンチパターンの目次に「アンチパターン:すべてのテーブルにID列を用いる」とあるのを見て、大胆にもサロゲートキーを否定しているのかと思って読んでみたが、どうも主張がはっきりしない。論点が尽くされていないような... 「SQLアンチパターン」の主張 第3章には以下のようなことが書いてある。 「IDリクワイアド」アンチパターン IDリクワイアドは「すべてのテーブルに"id"という列名の無意味な連番の列を追加し、PRIMARY KEY制約を付与する」というパターンのこと。 何がいけないのか 自然キーにUNIQUE制約を付けないなら、自然キーの重複を

    SQLアンチパターン「IDリクワイアド」の再検討 - 極北データモデリング
    rryu
    rryu 2013/03/06
    結合テーブルのカラムすべてが複合キーかつユニークという「主キーしかないんじゃね?」みたいな時と書いてあったような。外部キー群の直積に近い行数が作られる場合はIDがあふれる可能性があるので無い方が良い。
  • 1