タグ

sqlに関するopparaのブックマーク (22)

  • あなたの遅延はどこから? SQLから! 〜患部に止まってすぐ効くSQLレビューチェックリスト 年初め特大サービス号〜 - ANDPAD Tech Blog

    あけましておめでとうございます! 今年は異世界放浪メシのアニメが放送されるらしいので楽しみなバックエンドの原田 (tomtwinkle)です。 内部で運用しているSQLレビューチェックリストの一部を抽出し思いつきで追記して行った結果、結構な分量になってしまいました。 暇な時でも流し読みして頂けるとありがたいです。 Motivation SQLレビュー観点 大きくSQLが変更される修正の際にはEXPLAINをレビュー内容に加える 検索のキーにINDEXを使用しているか SQL発行回数がN+1(1+N)の構造になっていないか サブクエリを利用したSQLはパフォーマンス要チェック Viewの利用は基的に禁止 CROSS JOINは禁止 WHERE句で十分に絞った検索をしているか 必要なcolumnだけSELECTしているか レコード数だけ必要な場合にCOUNT用のSQLを発行しているか 集計関

    あなたの遅延はどこから? SQLから! 〜患部に止まってすぐ効くSQLレビューチェックリスト 年初め特大サービス号〜 - ANDPAD Tech Blog
  • 【Laravel】 クエリビルダでwhereを入れ子にする | Web Apps Labo

    sql select * from table1 where column1 = value1 and ( column2 = value2 or column3 = value3 ) return \DB::table('table1') ->where('column1', value1) ->where(function($query){ $query->where('column2', value2) ->orWhere('column3', value3) }) ->get();

    【Laravel】 クエリビルダでwhereを入れ子にする | Web Apps Labo
  • Arm Mac (M1 Mac) 上で Wine を使ってA5:SQL Mk-2を動作させる方法 |

    Arm Mac (M1 Mac)で、Wineを使ってA5:SQL Mk-2の動作に(とりあえず)成功したので、ここに手順を記します。 まだ安定しない場合もあるかと思うので、その場合は掲示板等で報告していただけるとありがたいです。 なお、Rosetta 2について記述していませんが、必要に応じてインストールするかOSが聞いてくるはずです。 前提(条件) OS バージョン : Mac OS 11.3 Wineバージョン : Wine 5.0 A5:SQL Mk-2 Version 2.16.0 beta 35以降(Version 2.16.0の正式版が公開されたらそちらを使用) A5:SQL Mk-2のダウンロードと展開 Vector からダウンロードする。 64bit版をダウンロードすること。 Homebrew のインストール 公式サイト シェルから以下のコマンドを実行

  • Engineer Camp2022 RustでSQLフォーマッタ作成(前編) | フューチャー技術ブログ

    はじめにみなさん、こんにちは! Future Engineer Camp 2022に参加した川渕と齋藤です。 今回のインターンではSQLフォーマッタをRustで作成しました。私達が取り組んだ内容を紹介します。 SQLフォーマッタとはSQLフォーマッタとはSQLを統一された体裁にフォーマットしてくれるツールです。体裁を統一することで他人が見ても読みやすいコードになり、生産性が向上します。 以下の図のように、インデントなどが揃って読みやすくなっていることがわかります。 背景フューチャーではすでにSQLフォーマッタを開発、利用しています。(記事) しかし、そのフォーマッタには以下の2点の問題点があります。 厳密な構文解析を行わずにトークンベースで処理を行っているため、難しい処理がある(例: 括弧の処理、エイリアスの補完など) Pythonで書かれているためVSCode拡張機能で動かすことが困難

    Engineer Camp2022 RustでSQLフォーマッタ作成(前編) | フューチャー技術ブログ
  • Boolean のカラムを生やす前に考えたいこと

    その方が単純に情報量が増えるため 最初 boolean にしてたけど後から時刻もほしくなるということはよくある。後から日時型のカラムに変えようと思っても、過去のイベントの日時は失われてしまっていて困る。今は日時が必要でないように感じても日時にしておく方がよい。 またアプリケーション的に使わなくても、データ分析のためにあると嬉しいことは多い。 コード的にも特に扱いにくくなることはない 以下のようにして簡単に boolean と同じ感覚で扱うことができる。 class Post < ApplicationRecord scope :unpublished, -> { where(published_at: nil) } scope :published, -> { where.not(published_at: nil) } def published? !published_at.nil?

    Boolean のカラムを生やす前に考えたいこと
  • 表示順という属性を別テーブルに分ける - そーだいなるらくがき帳

    最近、この説明を複数回したので記事にする。 要約 普段は 今北産業 派なのだが、3行考えるのが面倒なため、今後は大人の表現を使う。 「今北産業」をスタートアップ語にすると「マジ価値サマリー」になるらしい ちなみにここだけの話ですが、大人語にすると「要約」になります pic.twitter.com/Q8SflvBX7c— ところてん (@tokoroten) 2022年1月24日 画面に表示したい順(以下、表示順)は振る舞いの属性なので分ける 似たような振る舞いに関わる属性は別テーブルにわけると良い 普通に正規化しましょうって話。 表示順をカラムを追加して表現する よくあるテーブルは画面情報と合わせて表示順カラムがあるパターン。 こういうテーブルを作って SELECT * FROM items ORDER BY display_order_number; で表示順に取り出すパターン。 表示順

    表示順という属性を別テーブルに分ける - そーだいなるらくがき帳
  • オレ的EXPLAIN技を語っちゃうゾ - Qiita

    メリークリスマス 記事はPostgreSQL Advent Calendar 2021の25日目です。今年も面白い記事がたくさん揃いましたね!!! さて、みなさん今年のPostgreSQLライフはどんな感じでしたでしょうか? 私はというと、なんだかチューニングばっかりやってました。1案件でいろいろお手伝いすることはまあまああったのですが、複数から次々チューニングの相談をもらって、歴代継承者の個性を発現したデクくんのごとく駆け回ったのが今年のハイライトです。 (この綱渡り感、、、伝われ!!!) 俺たちは雰囲気でチューニングしている 今回上手くいったけど、あの時たまたまひらめいた1案をぶつけてみたら効果でたのであって、次善の策なんてなかったけど??って毎回思ってるから、雰囲気でやっていると思う、マジで。コミュニティのノリだと笑いが起きていいんですけど、少しでも勝率を上げるために、若手の前でド

    オレ的EXPLAIN技を語っちゃうゾ - Qiita
  • ストリーミングデータをSQLでリアルタイムに分析できる「Materialize」を使ってみた | DevelopersIO

    大阪オフィスの玉井です。 データ分析にリアルタイムを求めている方は必見のツールを紹介します。 Materializeとは? 公式曰く「streaming SQL materialized view engine」です。 … …わからん。 ざっくり説明 ストリーミングデータに対してリアルタイムにクエリできるDB(みたいなもの)です。 普通のDBやDWHの場合、テーブルなど(実体はストレージとかだと思いますが)にデータが格納されており、そこに対してクエリ(照会)します。Materializeも表面上はSQLなので、ビュー等の概念がありますが、実際のデータ自体は、静的なデータではなく、Kafka等のストリーミングデータ(常に増え続けているデータ)を対象にします。 つまり、増え続けるストリーミングデータに対して、あたかも普通のDBのようにクエリすることができます。しかも、結果は常にリアルタイムです

    ストリーミングデータをSQLでリアルタイムに分析できる「Materialize」を使ってみた | DevelopersIO
  • ちょっと複雑なSQLをEloquentに落とし込むためのメモ - Qiita

    はじめに 最近CTFのscoreboardとかを制作している際に複雑なSQL文を書き集計やグラフ化、データ取得をしないと行けないことがあり、「SQLで書けば一発!」と高をくくっていたが最後...Eloquentにとっつかまりました... 完成はしていないのでまだまだいっぱいこんな事案が出てくるとは思いますが何かしらの足しになればと思い投稿します。 WHERE (col1='a' OR col1='b') AND (col2='b' OR col2='a')

    ちょっと複雑なSQLをEloquentに落とし込むためのメモ - Qiita
  • RDBMSとNoSQLはどちらが速いのか? ゲーム開発におけるRDBの上手な使い方

    2018年11月14日、『神姫PROJECT』などソーシャルゲームの企画・開発を手がける株式会社テクロスが主催するイベント「TECH x GAME COLLEGE」が開催されました。第8回となる今回のテーマは「効率的なゲーム開発のためのRDB再入門」。株式会社ジーワンシステム代表取締役の生島勘富氏を招き、ゲーム開発をさらに飛躍させる、RDBの仕組みと考え方について解説します。後半パートとなる今回は、SQLとNoSQLのパフォーマンス比較と、古い技術に対する考え方について、氏の想いを語ります。 NoSQLは速いのか? 生島勘富氏(以下、生島):では、NoSQLSQLの話に入らせていただきます。この章では、MySQLと、memcachedと、MySQLをNoSQLのように使うHandler Socketというものがあるんですが、そのHandler Socketについて、少し説明します。 これ

    RDBMSとNoSQLはどちらが速いのか? ゲーム開発におけるRDBの上手な使い方
  • DynamoDBでSQLが使える!?DynamoDB+PartiQLで何が出来るのか試してみた | DevelopersIO

    はじめに CX事業部の佐藤智樹です。 先日DynamoDBについて以下の発表がありました。 え!?DynamoDBSQL使えるようになるの?何がどこまでできるのか気になったのでドキュメントを参照しながら試してみたいと思います。 正確にはSQL互換のクエリ言語のPartiQLを使いますが、稿ではSQLと呼称して記述していきます。 DynamoDB+PartiQLの操作についてはこちらのブログでも確認できます。こちらはAWS CLIを使用した操作について書かれています。 ドキュメント ドキュメントは以下から確認できます。 アクセス方法は現状以下の3パターンあるようです。 DynamoDBのWebコンソール(新バージョンのみ) AWS CLI AWS SDK(Java) 今回はWebコンソールで操作を試してみます。 CRUD操作してみた WebコンソールからSQLを実行します。まず最近でた

    DynamoDBでSQLが使える!?DynamoDB+PartiQLで何が出来るのか試してみた | DevelopersIO
  • [RDBMS][SQL]トランザクション分離レベルについて極力分かりやすく解説 - Qiita

    技術系の記事色んなところで書いてたけど、ここにまとめることにした。昔書いてたやつは綺麗バッサリ消そうかと思ったんだけど、やたらView数が多いやつが何個かあったので気が向いた時に乗り換えしつつ(予定)今の知識で更新。 概要 以下の3つの不都合な読み込み現象がある。この意味に関しては後ほど解説。とりあえずはどれもRDBMSのACID特性のI(Isolation-隔離性)から外れたものと思ってくれればいい。 ダーティリード ファジーリード(非再現リード,ノンリピータブルリード) ファントムリード で、題のトランザクション分離レベルは4つのレベルがある。 READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE 下に行くほど高レベルで上に行くほど低レベル。 高レベルになればなるほど、先ほどの不都合な読み込み現象が発生しなくなる。が

    [RDBMS][SQL]トランザクション分離レベルについて極力分かりやすく解説 - Qiita
  • [SQL]あるテーブルのキーに合致する別テーブルの値を更新する | DevelopersIO

    はじめに バッチ処理等を作成していると、あるテーブルのキーに合致する別テーブルの値を更新したいことがあるかと思います。このような場合、手続き型のプログラムでは以下の様な処理になるかと思います。 (あくまで一例です。他にも様々な記述方法があるかと思います。また文法的に正しいのかも検証しておりません。) ids = Src.ids # あるテーブルのキーを取得して格納する ids.each do |id| # キーをループする data = Dest.where(["id = ?", id]) # 更新対象を別テーブルより一件ずつ抽出する if data data.point = 200 data.update # 別テーブルの値を一件ずつ更新する end end このように、あるテーブルのキーに合致する別テーブルのデータを更新する処理をSQLではどうするのかについて書いていきます。 SQL

    [SQL]あるテーブルのキーに合致する別テーブルの値を更新する | DevelopersIO
    oppara
    oppara 2016/04/20
  • SQLの暗黙の型変換はワナがいっぱい

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2009年9月24日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり このエントリでは、SQLにおいて「暗黙の型変換」を使うべきでない理由として、具体的な「ワナ」をいくつか紹介します。 数値項目に対するSQLインジェクション対策のまとめにて説明したように、RDBの数値型の列に対してSQLインジェクション対策をする方法として、以下の三種類が知られています。 バインド機構を用いる パラメータの数値としての妥当性確認を行う パラメータを文字列リテラルとしてエスケープする このうち、方法3を使うべきでない説明の補足です。具体的には、方法3には、「暗黙の型変換」が発生しますが、それが思わ

    oppara
    oppara 2013/06/25
    : SQLの暗黙の型変換はワナがいっぱい - 徳丸浩の日記(2009-09-24)
  • vimからMySQLのselect文を実行するスクリプト|株式会社 フラッツ

    那須です。 私はputtyなどのターミナルでサーバに接続してから、開発を行うことが多いのですが、vimでプログラムを書きつつ、DBをチェックしたいときなどは vimを一旦サスペンドしてからMySQLのコンソールを開くなどをしてます。 慣れてしまえば、そんなに手間な動作でもないのですが、なんとかしたいものです。このようなときは、次のような対策が考えられるかと思います。 screenを使う DB用とvim用にターミナルを複数開く screenが使える環境であれば、文句なしに screenを使う状況なのですが、私がよく使っている開発サーバは、screenの動作が重く、積極的にscreenを使う気になれません。といって、DB用にターミナルをもうひとつ開いていても、つい別の用途で使ってしまい、いざというときにすぐデータの確認ができないということがあります。 前置きが長くなりましたが、そんなわけで、い

  • LinuxでSQLを整形したくってVimのSQLUtilitiesを使ってみた - kanonji’s diary

    手元のPCはFedora 15、開発サーバーはCentOS 5.6と、Linux環境で開発をしてるわけですが、CatalystでDBIC_TRACE=1してる時に出てくるSQLを、整形する手段がなかなか見つけられなくて困りました。Windowsだとフリーウェアの文化のおかげで、この手のツールは探せば何かしらみつかります*1。Linuxでもオープンソースの文化で、SQLの整形なんてすぐ見つかるだろと思ってたら、意外にも全然見つからなかった。そこで、Vimのプラグイン*2を教えてもらったので使って見ました。 使い方 :SQLUFormatter整形したいSQLvimで開くか、空で開いてSQLを張って、上記コマンドで整形出来ます。 Suggested Mappings: vmap <silent>sf <Plug>SQLU_Formatter<CR> nmap <silent>scl <Plu

    LinuxでSQLを整形したくってVimのSQLUtilitiesを使ってみた - kanonji’s diary
    oppara
    oppara 2012/04/26
    SQLUtilities - SQL utilities - Formatting, generate - columns lists, procedures for databases : vim online
  • ここまでやるか。SQLiteをJavaScriptに変換·SQL.js MOONGIFT

    SQL.jsはSQLiteEmscriptenを使ってJavaScript化したソフトウェアです。 SQL.jsはWebブラウザ上で使えるデータベースです。Emscriptenを使ってSQLiteJavaScriptに変換した面白いソフトウェアです。 デモです。テキストエリアに書かれたSQLを実行できます。 実行した結果です。最終的な結果だけが出力されています。SELECTの結果はJSONデータとして取得されています。 もちろん普通にSQLが使えます。 日語は出力時は化けてしまいましたがデータ上は問題ないと思われます。 SQL.jsはSQLiteがそのままJavaScriptになってしまったようなソフトウェアです。慣れた使い勝手でSQLを実行したり、データを取得できてしまうのは面白そうです。なお現状Google ChromeやFirefoxにしか最適化されていません。 SQL.jsは

    ここまでやるか。SQLiteをJavaScriptに変換·SQL.js MOONGIFT
  • CakePHP2 独自SQL文でPrepared Statementを使う - cakephperの日記(CakePHP, Laravel, PHP)

    CakePHP1系では、 Model->query('select * from posts where id=?', array('hoge'));みたいにして擬似バインドできましたが、CakePHP2からは下記の方法でやるとPrepared StatementでSQLを発行してくれます。 // in controller $result = $this->Post->getDatasource()->fetchAll( 'select * from posts as Post where Post.id = ? or Post.id = ?', array(1, "abc") ); $result = $this->Post->getDatasource()->fetchAll( 'select * from posts as Post where Post.id = :id or P

    CakePHP2 独自SQL文でPrepared Statementを使う - cakephperの日記(CakePHP, Laravel, PHP)
  • 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (1)OLAP関数とは何か | gihyo.jp

    SQLアタマアカデミー 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (1)OLAP関数とは何か はじめに この連載では、SQLの独特な考え方に慣れてもらうため、その集合指向的な側面を強調して取り上げてきました。これはほかの言語が持たない特性のため、慣れないうちはそのパラダイムが奇妙に感じられます。その違和感を軽減することが、連載の目的の一つでした。 一方最近では、SQLの側でも時代のニーズに対応するため、さまざまな機能を追加しています。その一端で、実はかなり手続き型言語の考え方を取り入れるようになっています。そのため、むしろ新機能のほうが一般的なプログラマにとっては「とっつきやすい」と思えるところがあります。 今回取り上げるのは、そうした新機能の一つで、OLAP関数と呼ばれるものです(分析関数とかウィンドウ関数という名前でも呼ばれます⁠)⁠。標準SQLでは2

    最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (1)OLAP関数とは何か | gihyo.jp
  • QuickRunからSQLを実行するための設定(MySQL用)

    この記事は、Vim Advent Calendar 2011 の29日目の記事です。 Webアプリの開発をしていると、少し複雑なSQLを書かなきゃならないとか、開発用のデータを入れ替えたいなどSQLを実行したいと思うシチュエーションが多々あります。そんなとき、皆さんはどのような方法でSQLを実行してるでしょうか?シェルからコマンドを叩いてみたりphpMyAdminのようなWebベースのDBMSを使ったりといくつか方法があると思います。 私はシェルからコマンドを起動することが多いのですが、ほんの一瞬であってもVimから離れてシェルに戻るのが苦痛です。また、DBMSを使う場合でもVimから離れてSQLの編集を行わなければならなかったり、VimSQLファイルを編集してからそれをDBMSにもっていったりと何かと煩雑な作業が入るのが辛いです。 そんな私のようなVimmerのためにVim内からSQL