タグ

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

  • 「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

    概要 私は株式会社ZUUで、主にバックエンドの開発を担当しており、フロントエンド、インフラに関する業務も担当しています。 今回取り上げる内容は、SQLの書き方一つでパフォーマンスがどれだけ改善できるかを、実例をもとに記述していきます。 シナリオ 使用しているDBMSはPostgreSQL12です。 話を単純化するために単純な例で説明します。今回は投稿記事を管理するケースを想定します。投稿される記事には複数の画像が載っており、全ての画像がアップロード完了していれば記事として有効なものと考えます。 テーブルはarticles, imagesを用意します。 実際にデータを入れてみるとこんな感じ。 articles id title published_at

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

    PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)

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

    (この記事は 地平線に行く とのマルチポストです) 番環境でやらかしちゃった人 Advent Calendarで、このパターンのやらかしはなかったのでキーボードを叩くことにしました。 番外編のつもりでお楽しみください。 この記事が、新たな障害発生を防ぐことにつながれば幸いです。 何をやったのか ある日、ちょっとした調査のために番データベースのデータを確認することになりました。 (個人情報が格納されているようなシステムではなかったので、必要であれば番データベースへのアクセスが許されていました) もしメンテナンスがあればそのタイミングでやればよかったのですが、直近では特に予定はないとのことでした。そのため、システムが動いている状態のまま作業をすることにしました。 ごく単純な SELECT を実行するだけのつもりだったので、システムに影響がないと判断したためです。 その際、万が一コピペをミ

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

    これから読む君へ、さきにひとつ謝っておこう。 華々しい番やらかしの告発が連なるこのカレンダーにおいて 今夜語る事件はあまりにも些細で地味なものだ。 そうさ、些細だが 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インジェクション

    PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)Koichiro Matsuoka

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

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

    Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)

    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