タグ

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

  • SQLのORDER BY 列番号と式 :: Noboru Saito's page

    きっかけtom__boさんが書かれた8.0.22でのprepared statementの挙動変化 で、ORDER BY に列番号を指定する問題に注目が集まりました。 その中で紹介されていた、 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 expression in the select list; the results are no longer ordered, as is expected with ORDER BY constant. 「the results are n

    SQLのORDER BY 列番号と式 :: 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のロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)

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

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

    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マッパーによるトラブルを未然に防ぐ

    2. copyright © 2014 kuwata-lab.com all rights reserved まえがき 現在、アプリケーション開発の現場では O/R Mapper (ORM) が普及しています。今後 も ORM を使った開発は、増えることはあっても減ることはないでしょう。 しかし ORM は、アプリケーション開発者にとっては便利でも、DB 管理者 (DBA) か らみたらトラブルの種でもあります。それが特にパフォーマンスに関する問題であるこ とが多いため、開発者と DBA が対立することも珍しくありません。 とはいえ、ORM による問題はすでに解決策が用意されている場合があります。当の 問題は、すでに存在する解決策があまり知られていないことではないでしょうか。 そこで発表では、ORM によってどのような問題が起こりやすいか、どう解決・予防 すればいいか、そして ORM

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

    7. 通常のWebサーバとの通信 <html> <body> <form action=“register” method=“POST”> 氏名:vultest<BR> メールアドレス:vulte[email protected]<BR> 性別:男<BR> (以下略) </html> POST /confirm.php HTTP/1.1 Host: example.jp (以下略) Cookie: PHPSESSID=xxxxxxxxxx name=vultest&mail=vultest%40example.jp&gender=1 HTTP Response HTTP Request 8. 色々いじってみてどういう応答があるか確認 POST /confirm.php HTTP/1.1 Host: example.jp (以下略) Cookie: PHPSESSID=xxxxxxxxxx name

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

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

    28. NULLは値じゃない id 顧客名 取引額 年齢 性別 1 福沢諭吉 10000 56 男 2 慶応義塾大学 10000 null null 3 樋口一葉 5000 20 女 4 野口英世 1000 41 男 5 野口英世記念館 1000 null null 29. NULLは値じゃない id 顧客名 取引額 年齢 性別 1 福沢諭吉 10000 56 男 2 慶応義塾大学 10000 3 樋口一葉 5000 20 女 4 野口英世 1000 41 男 5 野口英世記念館 1000 枠自体がない

    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