Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

SQLに関するn2sのブックマーク (61)

  • MySQL JOIN Types Poster - Steve Stedman

    So many times I have been asked for help with a query, where the question really comes down to the understanding of the difference between INNER and LEFT or RIGHT JOINs. I created this poster a few years ago and I keep it posted on the wall at the office. This way when I am trying to explain JOIN types, I just refer to the poster. I have created the poster below to help describe JOIN types in My S

    MySQL JOIN Types Poster - Steve Stedman
    n2s
    n2s 2023/01/30
    via https://twitter.com/developer_quant/status/1619695812401045505/ / INNERとかOUTERは付けるけどASは付けないんですね。自分と正反対だw
  • SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話 - Qiita

    2020/9/30追記 記事は元々、「SQL記述者全員が理解すべきSELECT文の実行順序のお話」というタイトルで投稿しておりました。 しかし、知見のある方からのコメントと自分でも調べてみた結果、今回紹介している順序はあくまで論理的な処理順序であり、実行順序とは別物ということがわかりました。 誤った知識を布教してしまい申し訳ございません。 2020/9/30のタイミングで、記事のタイトルを「SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話」に変更させていただきました。 はじめに 「SQLといえば、エンジニアが扱うスキル」と思われがちですが、最近はマーケターや営業など、非エンジニアの方もSQLを使って、自らデータを抽出し分析する方が増えてきています。 またエンジニアの方でも、ORM任せでなんとなく理解している状態の方もいるのではないでしょうか? 今回は、そんな方々にこそ

    SQL記述者全員が理解すべきSELECT文の論理的な処理順序のお話 - Qiita
    n2s
    n2s 2020/09/22
  • 本当にあったやらかしDB設計シリーズ一覧 - Qiita

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

    本当にあったやらかしDB設計シリーズ一覧 - Qiita
    n2s
    n2s 2020/08/10
  • PostgreSQL: 「OR」を避けてパフォーマンスを向上させよう(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: avoid OR for better PostgreSQL query performance - Cybertec 原文公開日: 2018/05/07 著者: Laurenz Albe サイト: CYBERTEC -- データサイエンス分野でのPostgreSQLサポートやコンサルティングを行っている企業です ※挿絵は原著者自らによるものです。 生きるべきか『OR』死すべきか、それが問題だ」 「帰れ!」「非効率!」「同義反復!」 © Laurenz Albe 2018PostgreSQLクエリのチューニングは私たちCybertecの日常的な業務ですが、チューニング中にクエリにORを1つでも見つけた瞬間、恐ろしさに身の毛もよだつ思いがします。たいていの場合、ORはクエリのパフォーマンス低下の原因となるからです。 言うまでもないこ

    PostgreSQL: 「OR」を避けてパフォーマンスを向上させよう(翻訳)|TechRacho by BPS株式会社
  • 履歴テーブルについて - 一休.com Developers Blog

    この記事は一休.com アドベントカレンダーの25日目の記事です。 レストラン事業部エンジニアのid:ninjinkunです。 一休.com及び一休.comレストランはユーザー向けのシステムだけではなく、店舗や一休内の管理者向けの業務システムという性格も持っています。 業務システム経験の無かった自分が一休に転職して最初に驚いたのが、DBに履歴を保持するための履歴テーブルが大量にあることでした。 そこから履歴テーブルの存在に興味と疑問を持ち、社内外のエンジニアと履歴テーブルについて議論してきました。このエントリではそれらの議論をまとめた結果について書いていきます。 履歴テーブルのパターン まず以下の図をご覧ください。 込み入った図かつ事例が一休特化で恐縮ですが、左上の起点から始まって、右のオレンジの部分が最終的な実装パターンです。 図にあるとおり、たいていのユースケースでは以下の3パターンの

    履歴テーブルについて - 一休.com Developers Blog
    n2s
    n2s 2018/12/26
  • MySQLのInnoDBプライマリーキーのチューニング | Yakst

    [MySQL]原文 Tuning InnoDB Primary Keys - Percona Database Performance Blog (English) 原文著者 Yves Trudeau 原文公開日 2018-07-26 翻訳依頼者 翻訳者 kakuka4430 翻訳レビュアー doublemarket 原著者への翻訳報告 2055日前 原文へのコメントで報告済み 編集 良いInnoDBプライマリキーを選ぶことは、パフォーマンスチューニングの方向性にとても重要です。この記事では、あなたのワークロードに応じた最適なプライマリキーを選ぶための方法を紹介したいと思います。 Percona社のプリンシパルアーキテクトとしての私の責務の一つは、顧客のデータベースをチューニングすることです。パフォーマンスチューニングに関連する側面は多く存在し、それがこの仕事を複雑、かつ大変興味深いものに

    n2s
    n2s 2018/10/31
  • Using filesort

    去年ソートに関する記事を書いたが、今日はその続きである。 MySQLでEXPLAIN SELECT...を実行するとExtraフィールドでよく見かける「Using filesort」という文字列。Filesortって一体なんだろう?と思ったことはないだろうか。単刀直入に言ってFilesortの正体はクイックソートである。 クエリにORDER BYが含まれる場合、MySQLはある程度の大きさまでは全てメモリ内でクイックソートを処理する。ある程度の大きさとはsort_buffer_sizeであり、これはセッションごとに変更可能である。ソートに必要なメモリがsort_buffer_sizeより大きくなると、テンポラリファイル(テンポラリテーブルではない)が作成され、メモリとファイルを併用してクイックソートが実行される。 Filesortは全てのソート処理において実行されるわけではない。前回の記事

    Using filesort
    n2s
    n2s 2018/10/31
  • SQLにおける行間比較で、相関サブクエリを使わなくて済む「ウィンドウ関数」とは?:CodeZine(コードジン)

    SQLの達人と呼ばれるミックさんがモダンなSQLプログラミングの手法について解説した『達人に学ぶSQL徹底指南書 第2版』。今回、書からミックさんが主役級と語る「ウィンドウ関数」について紹介します。ウィンドウ関数を利用することで、SQLでの行間比較において難しい相関サブクエリを使わなくてよくなるのです。 記事は『達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ』の「2 必ずわかるウィンドウ関数」を抜粋し、掲載にあたり編集したものです。 順序を使ったプログラミングの復活 記事ではウィンドウ関数というSQLの道具を取り上げます。1990年代の後半にアイデアが登場し、2000年代にOracleDb2、SQL Server などのDBMSでサポートされるようになり、2017年にMySQLがサポートを表明したことで、現在では主要なすべてのDBMSで利用することが可能になりま

    SQLにおける行間比較で、相関サブクエリを使わなくて済む「ウィンドウ関数」とは?:CodeZine(コードジン)
    n2s
    n2s 2018/10/19
    採用バージョン: MySQL 8.0, MariaDB 10.2.0, PostgreSQL 8.0, SQLite 3.25, SQL Server 2008
  • 初心者のためのSQLガイド???? : SQLを直感的に理解しよう | POSTD

    SELECT * WHERE a=b FROM c ? それとも SELECT WHERE a=b FROM c ON * ? もしあなたが私のようなプログラマだったら、SQLは、初めは優しく見える言語の1 つかもしれません(ただ単に普通の英語通り読めばいいですから)。ですが、何かしらの理由で、なんてことのないクエリにもいちいち正しいシンタックスをググらなければいけないでしょう。 いずれJOINにAGGREGTATION、サブクエリにたどり着くでしょうが、読んだとしてもさっぱりでしょう。例えば次のような感じです。 SELECT members.firstname || ' ' || members.lastname AS "Full Name" FROM borrowings JOIN members ON members.memberid=borrowings.memberid JOIN

    初心者のためのSQLガイド???? : SQLを直感的に理解しよう | POSTD
    n2s
    n2s 2016/08/18
  • ORDER BYで、単純な昇順降順「以外」で並べる! - なからなLife

    いやー、知らないって怖いね。 なんだこのキモいSQLは、って思ってしまったけど、調べているウチに、これちゃんとSQL構文に則ってる!こちらが間違ってた!って事がわかっていきました。 あえて、知らなかった所から勢いで書いていたのを、そのままにしてみました。 キモいSQLコードを偶然見つけた SQLにおけるORDER BYって、その後にカラム(およびそのエイリアス)を並べてソート順として使用するわけですが、MySQL案件のお仕事の中で偶然こんなものを見つけて、絵に描いたような二度見リアクションしました。 SELECT * FROM tbl ORDER BY id = 23; -- (1) SELECT * FROM tbl ORDER BY FIELD( id, 23, 234, 543, 23 ); -- (2)こうした、「ORDER BYに、あたかもWHERE句で絞り込む条件指定のような使

    ORDER BYで、単純な昇順降順「以外」で並べる! - なからなLife
    n2s
    n2s 2016/07/28
  • SQLの苦手意識を克服できる!基礎から学べるサービス9選

    現役ITエンジニアの方の中には、SQLに対して苦手意識を持っている方もいらっしゃるのではないでしょうか。 SQL自体は、ANSI(米国国家規格協会)や、ISO(国際標準化機構)で言語仕様の標準化が行われているので、一度マスターしてしまえば、製品によって多少の違いはあれど、基的にどのDBでも同じように利用することが可能です。 つまり、実はエンジニアにとって非常に嬉しい言語なのです。 今回は、苦手意識を持たれている方も気軽に始めることができて、かつ必要な情報を網羅できるオススメのサイトを9つご紹介します。 このニュースを読んだあなたにオススメ ノンプログラマーWebサービスやツールを作るまでの備忘録20選 無料で学べる人気プログラミング学習サイト21選 プログラミングするならこれ!無料で使えるおすすめのテキストエディタ6選 SQLが学べるサービス9選 1.ドットインストール http://

    SQLの苦手意識を克服できる!基礎から学べるサービス9選
    n2s
    n2s 2016/07/24
  • MySQL Query tuning 101

    This document provides an agenda and overview for a MySQL Query Tuning 101 presentation. The summary includes: 1. The agenda covers topics like identifying slow queries, using indexes, the EXPLAIN tool, and other optimization techniques. 2. When queries run slow, the presenter will discuss using indexes to improve performance by allowing MySQL to access data more efficiently. 3. The EXPLAIN tool i

    MySQL Query tuning 101
    n2s
    n2s 2016/02/24
  • ad3e04e50357a1e758fc#_reference-a1b4100c3771c36dfbe6

    SELECT COUNT(*) INTO before_count FROM table1; ... INSERT INTO table1 ...; ... SELECT COUNT(*) - brefore_count INTO registered_count FROM table1; なにかTABLEへの追加処理をしてますが、意図通りにできたかどうか、前後で COUNT(*)をとって、その差分を報告させようとしています。 複数のプロジェクトの複数のオーナーのコードで見かけたので、こんな初級アンチパターンも共有しときます。 なにがまずいの? COUNTは、シーケンシャル・スキャンしないと出てこない値なのです。アンチパターンでは、テーブル全体が対象ですから、主キーインデクスを総なめです。小さいテーブルのうちはいいのですが、運用の1000万行を越えるような巨大テーブルだと、主キーインデック

    ad3e04e50357a1e758fc#_reference-a1b4100c3771c36dfbe6
  • SQLアンチパターン~ファントムファイル

    18. /var/upload/img/ データベース Hiyoko.jpg Roads.jpg Penguis.jpg reportID comment imagePath 001 XXXXXXX・・・ Penguins.jpg 002 XXXXXXX・・・ Roads.jpg 003 A======・・・ Hiyoko.jpg ファイルの削除時の問題 この行を 削除しても 自動的には 削除されない 19. Aさんの処理 Bさんの処理 1.トランザクション開始 2.reportID:002のデータを 削除 3.Roads.jpgを削除 1.トランザクション開始 2.reportID:002のデータを参照 ・ 3.画像ファイルを参照 ・ ・ x.コミット /var/upload/img/ データベース Hiyoko.jpg Roads.jpg Penguis.jpg reportID co

    SQLアンチパターン~ファントムファイル
    n2s
    n2s 2015/12/31
  • SQL 脳から見た Ruby

    7. SQLRuby �������������� ���� �������� �� ���������� �� ���������� ��� ���������� ��� ���������� ��� ���������� ��� ����������

    SQL 脳から見た Ruby
    n2s
    n2s 2015/11/08
  • 1日に100万レコード増える場合のテーブル設計

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。 PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

    1日に100万レコード増える場合のテーブル設計
    n2s
    n2s 2015/11/04
  • 挿入と参照ロックに疲れ果てた俺たちは - ichirin2501's diary

    なかったらINSERTしたいし、あるならロック取りたいやん? from ichirin2501 www.slideshare.net 出来事 @ichirin2501 とりあえず何も考えずこの前のロックの話をSlideshareにあげてくれ!!— 柴崎優季 (@shiba_yu36) 2015, 8月 22 はじめに これは先日の社内勉強会で発表したもので、MySQLで特定の問題を解決したいときのノウハウ話です。特定の問題とは、アプリを書いてると「データがなかったINSERTしたい、あるなら排他ロックしつつ取得したい」という要望があったりします。例えば、あるユーザーアクションで初期値もパラメーターで渡されるケースで、データがないならそのままINSERT、既にデータがあるなら取得して状態に依存して更新処理を行いたい場合などです。見かけのロジックは単純に見えますが、MySQLでこれを実現しよう

    挿入と参照ロックに疲れ果てた俺たちは - ichirin2501's diary
  • はてなブックマーク in Scala

    2. 自己紹介 名前 い な 伊奈 りんたろう 林太郎  (id:tarao @oarat) 2008-08 はてなインターン 2008-10 はてなアルバイト (ブックマークチーム) 2010-04 日学術振興会 特別研究員 (DC1) 2013-04 はてな正社員 2013-12 ブックマークチーム ◮ アルゴリズム屋さん ◮ 検索技術 > 機械学習 ≫ アドテク ◮ 最近は設計したり基盤寄りな部分を担当したり 3. 自己紹介 名前 い な 伊奈 りんたろう 林太郎  (id:tarao @oarat) Scala 歴: 4ヶ月 ◮ slick-jdbc-extension ◮ 型レベルのラムダ計算 ◮ Software Design 2015 年 8 月号 大学時代は ◮ 研究室: 型理論, プログラム意味論, 証明支援系 ◮ OCaml が公用語 ◮ gradual typing

    はてなブックマーク in Scala
    n2s
    n2s 2015/08/04
  • SQLでデータベーステーブルの縦・横変換

    2006年07月10日 クエリを思いつかなかった子のために。これはあくまでヒントだぞ。 以降の例では Oracle9iリリース2で説明しています。 データベースのテーブルには、何故か無駄に横長のものがあったりします。 ホスト時代のデータセットイメージをそのままテーブルフォーマットにしちゃったようなやつですね。項目名に「FILLER1」とか名前がついている( ̄▽ ̄; こんなテーブルがあるとします。 SQL> DESC 売上ランキング横; 名前 NULL? 型 ---------------------------- -------- -------------------------- 売上年 VARCHAR2(4) 1位製品 VARCHAR2(10) 1位売上 NUMBER(5) 2位製品 VARCHAR2(10) 2位売上 NUMBER(5) 3位製品 VARCHAR2(10) 3位売上

    SQLでデータベーステーブルの縦・横変換
    n2s
    n2s 2015/07/21
  • PostgreSQLのアンチパターン : 何でもかんでもjsonに入れる | Yakst

    PostgreSQL 9.2より追加されたJSON型だが、特徴を理解して適切に使わないと色々な副作用に悩まされることになる。その問題点を挙げると共に、どのような場合に使うべきかの指針を示す。 PostgreSQLは、データ型としてjsonをサポートしています。しかし、やりたいことがある時に何でもかんでもjson型を使ってしまうというのはやめるべきです。これは、hstoreや新しく登場したjsonb型にも同じことが言えます。これらの型は必要な時には便利なツールになりますが、PostgreSQLでデータのモデリングを行う際に最初に検討すべきものではありません。 なぜなら、データを呼び出したり操作したりするのが難しくなってしまうためです。 何もかも同じところに入れてしまおうとすることによるアンチパターンをご存知の読者もいるでしょう。EAVアンチパターンは、長らくデータベーススキーマにおける必要悪

    PostgreSQLのアンチパターン : 何でもかんでもjsonに入れる | Yakst