タグ

sqlに関するYaSuYuKiのブックマーク (9)

  • State of SQL Antipatterns in 2017

    2017/07/10 SQLアンチパターンNight Part2 https://connpass.com/event/59946/

    State of SQL Antipatterns in 2017
    YaSuYuKi
    YaSuYuKi 2017/07/11
    ナイーブツリーは当時でもすでにCTEを使って対応していた記憶があるので、過去の話になるのもわかる
  • 分析SQLのコーディングスタイル - クックパッド開発者ブログ

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

    分析SQLのコーディングスタイル - クックパッド開発者ブログ
    YaSuYuKi
    YaSuYuKi 2016/11/09
    かなり複雑なSQLも書くが、いつもスタイルは不定でぐちゃぐちゃだった……/withはSQL Serverだと全然最近ではないから余裕で使うな
  • MySQL 8.0 Lab版: MySQLの (再帰)共通テーブル式(CTE) | Yakst

    免責事項 この翻訳は MySQL Server Blog の 記事 をユーザーが翻訳したものであり、Oracle公式の翻訳ではありません。 MySQL開発チームはこのたび Lab版 のMySQLサーバーをリリースしました("MySQL Server 8.0.0 Optimizer" として公開されています) 私が開発したこのリリースの特徴的な機能は (再帰)共通テーブル式…(再帰)CTE, (再帰)サブクエリー処理, WITH [RECURSIVE] 句としても知られています…です。 3年前、私はCTEをエミュレートする方法を ブログ で紹介しました。しかし、MySQLは今や物のCTEを備えました。偽物ではなく! これはこの新機能の全ての詳細を紹介するブログポストの最初の一つです。 派生テーブルはFROM句のサブクエリーです。下記の太字の部分がそれにあたります。 SELECT … FRO

    MySQL 8.0 Lab版: MySQLの (再帰)共通テーブル式(CTE) | Yakst
    YaSuYuKi
    YaSuYuKi 2016/10/27
    これで、ついに、SQLアンチパターンの一つ「ナイーブツリー」が完全に死ぬ!
  • SQL実践入門──高速でわかりやすいクエリの書き方 - kagamihogeの日記

    俺は実務経験をある程度こなしたあと、RDBの知識不足を認識したクチである。改めてRDBを勉強し始めて困ったことの一つは、実行計画の読み方がよくわからないことだった。もちろん、ぐぐればNESTED LOOP JOINが何かとかは出てくるし、公式のマニュアルも参考になる。ただ、webの文献は体系だって解説があるとは限らないし、個人のブログなどは粒度がバラバラで、まとまった量の知識を得るには向いていない。マニュアルも膨大な量があるので慣れていないと目的の文書が書いてあるかどうかすら分からないし、あったとしても必要なレベルの解説があるかどうは分からない。 そこで書の出番である。既存の書籍にもSQLとパフォーマンスを論じたものはあるにはあるのだが、それに特化したの存在は、少なくとも俺は知らない。一冊だけ、データベースパフォーマンスアップの教科書 基原理編 - kagamihogeの日記という極

    SQL実践入門──高速でわかりやすいクエリの書き方 - kagamihogeの日記
  • Amazon.co.jp: 10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA): 青木峰郎: 本

    Amazon.co.jp: 10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA): 青木峰郎: 本
  • 実行計画が解れば怖くない。SQL実践入門 - プログラマでありたい

    技術評論社さんから、SQL実践入門を献いただきました。ありがとうございます。 SQL実践入門の主題 このの目的は、「パフォーマンスの良いSQLの書き方、特に大量データを処理するSQLの性能向上の方法を理解すること」とあります。そのパフォーマンス向上の為の解として、SQLが内部的にどう処理されているかを表す実行計画の読み解き方を、いろいろなケースを上げながらひたすら解説しています。そして、何故その実行計画になるのか、データ構造やDBの動きとともに説明しています。ということで、実行計画大事という基かつ当たり前のことを、正面から取り扱っている良質のSQLです。 SQL実践入門の構成 SQL実践入門の章立ては、下記の通りです。 第1章:DBMSのアーキテクチャ──この世にただ飯はあるか 第2章:SQLの基礎──母国語を話すがごとく 第3章:SQLにおける条件分岐──文から式へ 第4章:集約

    実行計画が解れば怖くない。SQL実践入門 - プログラマでありたい
    YaSuYuKi
    YaSuYuKi 2015/04/17
    実行計画はずっと見続けてきたが、行っていることの詳細は感覚的にしか把握できていない点が山のように残っているので、読む価値は十分ある
  • ActiveRecordのSQLインジェクションパターン

    (Last Updated On: 2018年10月7日)Railsで多用されているActiveRecordのインジェクションパターンを簡単に紹介します。出典はrails-sqli.orgなのでより詳しい解説はこちらで確認してください。特に気をつける必要があると思われる物のみをピックアップしました。 Exists?メソッド User.exists? params[:user] params[:user]などの使い方は危険です。RailsPHPなどと同様にuser[]というパラメーターで配列化します。 ?user[]=1 が入力の場合、 SELECT 1 AS one FROM "users" WHERE (1) LIMIT 1 となり不正なクエリが実行されます。 Calculateメソッド CalculateメソッドはSQLの集約関数を実行するメソッドです。average、calcula

    ActiveRecordのSQLインジェクションパターン
    YaSuYuKi
    YaSuYuKi 2014/05/10
    値以外のものを直接パラメーターからセットするのはやめよう。値はプレースホルダで、それ以外は固定の変換表を
  • SQLアンチパターン

    書はDB設計やSQL記述の際に避けるべき事柄を1章で1つ、25個紹介する書籍です。リレーショナルデータベースを中心に据えたシステム開発には、様々な場面で陥りやすい失敗(アンチパターン)があります。書はデータベース論理設計、データベース物理設計、クエリの記述、アプリケーション開発という4つのカテゴリに分け、それぞれの分野におけるアンチパターンを紹介し、失敗を避けるためのより良い方法を紹介します。複数の値を持つ属性や再帰的なツリー構造の格納から、小数値の丸めやNULLの扱いに起因する問題、全文検索やSQLインジェクション、MVCアーキテクチャなど、実践的かつ幅広いトピックを網羅します。日語版では、MySQLのエキスパートとして著名な奥野幹也氏によるアンチパターンを収録。データベースに関わるすべてのエンジニア必携の一冊です。 書への称賛の声 監訳者まえがき はじめに I部 データベース論

    SQLアンチパターン
    YaSuYuKi
    YaSuYuKi 2013/01/15
    ebook版が出たら即買う
  • WHERE条件の最終桁のスペースについて質問です。

    WHERE条件の最終桁のスペースについて質問です。 あるテーブルのカラム(colA)に"1234"というデータがあるときに、 (1)SELECT .... WHERE colA='1234' (2)SELECT .... WHERE colA='1234 '  (1234の後に半角スペース) (3)SELECT .... WHERE colA='1234 ' (1234の後に全角スペース) (4)SELECT .... WHERE colA='12345' を、実行すると、(1)だけOKで、他はNGとなると思い込んでいましたが、 実際は、(2)と(3)も同じように検索されてしまいます。 WHERE条件の最終桁のスペースは無視される? こういうものなのでしょうか? オンラインヘルプ等からは、それらしい情報が見つけられなかったのですが、もしこの辺の情報がわかるサイト等ご存知でしたら教えてくださ

    WHERE条件の最終桁のスペースについて質問です。
    YaSuYuKi
    YaSuYuKi 2012/04/06
    最後のスペースは無視されるのが仕様なのか……
  • 1