タグ

TIPSとsqlに関するclavierのブックマーク (13)

  • リーダブルSQL[より良いSQLを書くためのシンプルで実践的なテクニック] - Qiita

    はじめに 最近エンジニア界隈では「リーダブルコード」が話題なっていますね。 リーダブルコードでは、このような定理が紹介されています。 「コードは他の人が最短時間で理解できるように書かなければいけない。」 Dustin Boswell リーダブルコード P.3 より引用 SQLでも同じことが言えそうです。 リーダブルなSQLを書いてないと結婚できない時代が今まさに到来しようとしています。 皆さん、クソSQL1を読んだことがありますね? クソSQLを書いたことがありますね? 僕は、あります。 そこで、記事ではどうしたらリーダブルなSQLが書けるかというアイデアを紹介します。 処理の流れの順に上から読めるようにする 人間のメンタルモデルは、問題やタスクを小さなステップに分割し、それぞれを順番に実行することに適しています。 サブクエリを使ったSQLでは、処理の流れは上から下ではなく、ネストされた

    リーダブルSQL[より良いSQLを書くためのシンプルで実践的なテクニック] - Qiita
  • SQLは書けるけどBigQueryは初見の人に贈るざっくりBigQuery

    去年使い始めたBigQueryについて、BigQueryを使う前の私に教えてあげたいことをまとめてみました。 BigQueryとは Google Cloudで提供されている、データ管理と分析のためのデータウェアハウス(めっちゃデータが入ってる総合的な倉庫と思ってもらえれば)サービスです。 フルマネージドなので、インフラ管理も楽なままSQLクエリだけで大規模なデータ分析基盤を構築できます。 気軽に試すには、Sandbox環境がおすすめです。 DDL(CREATE TABLEとか)は発行できませんが、パブリックデータセットなども存在しているので、基的な操作は試すことができます。 特徴 BigQueryは早いということがよく特徴として上がりますが、それを実現する二つの大きな要素があります 列指向データベースであること データウェアハウスでは列指向データベースが多いですが、BigQueryも例に

    SQLは書けるけどBigQueryは初見の人に贈るざっくりBigQuery
  • BigqueryでUNNESTを使いこなせ!クエリ効率100%!!最強!!

    どうも!BIチームの小林です! 今回は、 BigqueryでUNNESTをうまく使えば、 見やすくてしかも効率が良いクエリを書けるんです! ということをやっていきたいと思います! はい。 私の好きなものは Fortnite、RainbowSixSiege、ゲーム配信 です。 当記事は、ゲーム配信だと思って読んでください。 ちなみになんですが、前回2018年のアドベントカレンダーでは、 BigqueryでStandardSQL書くときに使えるTipsをいくつか紹介したので、 「Bigqueryは記法に癖があって難しいよ〜」 「すたんだーどすぃーくえるってなんですか?」 という人は、是非見てください!! ↓↓

    BigqueryでUNNESTを使いこなせ!クエリ効率100%!!最強!!
  • 決済システムの残高管理周りの DB 設計と戦略 - カンムテックブログ

    エンジニアの佐野です。今日はカンムの決済システムでユーザの残高管理をどうやっているかについて書きます。 カンムの製品であるバンドルカードはプリペイド方式のカードです。ユーザによる入金、店舗での利用、運営事由の操作などによりユーザの残高が増減します。このような残高の管理について単純に考えると user_id と balance と updated_at あたりをもったテーブルを用意して balance と updated_at を更新していく方法があるかもしれません。しかしながらカンムでは残高を管理するテーブルを持たず、これらイベントの履歴のみで残高を管理しています。以下、記事ではこれらユーザの残高が増減するイベントのことをトランザクションと呼びます。ここでは DB の Transaction Processing を意味しません。 記事のポイントは 残高を管理をするテーブルは作らず、ト

    決済システムの残高管理周りの DB 設計と戦略 - カンムテックブログ
  • SQLが重いときに見るお気軽チューニング方法

    SQLのチューニング方法 昔Qiitaで書いたものをzennうつして、若干の修正、追加をしてみました。 ORACLEでの経験を元に書いていますがコストベースのリレーショナルデータべースなら大体共通の考え方だと思うので他にも使えると思います。 SQLのチューニングといえば比較的容易に済むインデックスをとりあえず作成する。といった対応を取られがちですが、数万レコード程度でのデータ量ではあまり効き目がなく(自分の経験則)、どちらかといえば、結合順が大幅に狂ってたりすることが原因のことが多かったりします。よって当にインデックスがないことが原因なのか?を熟考する必要があります。(例えばID以外のフラグとかコードに単項目indexを貼ってるのもみたことがあります。怖いけど実話) また、インデックスを作りすぎるとオプティマイザが狂いやすくなって他のSQLにも悪影響を及ぼしたりするので結構熟慮して追加

    SQLが重いときに見るお気軽チューニング方法
  • Apache Sparkコミッターが教える、Spark SQLの詳しい仕組みとパフォーマンスチューニング Part2

    2019年3月19日、Data Engineering Meetupが主催するイベント「Data Engineering Meetup #1」が開催されました。データの収集や管理、処理、可視化など、データエンジニアリングに関する技術の情報を共有するイベント。データエンジニアリングの最前線で活躍するエンジニアたちが集い、自身の知見を共有します。プレゼンテーション「Deep Dive into Spark SQL with Advanced Performance Tuning」に登壇したのは、Databricks Inc.の上新卓也氏。講演資料はこちら Optimizer 上新卓也氏:これでLogical Planにキャッシュを使うプランが含まれてきたので、その次の処理としてはOptimizerですね。 これは今までプランの書き換えなどはやってこなかったんですが、ここからプランをガシガシと

    Apache Sparkコミッターが教える、Spark SQLの詳しい仕組みとパフォーマンスチューニング Part2
  • BigQueryによるデータ分析のための前処理Tips - ZOZO TECH BLOG

    こんにちは。 使うSQLが200行を超えるのが当たり前になってきたデータチームの後藤です。 記事では、VASILYデータチームで利用しているBigQueryによるデータの前処理のTipsを紹介します。 VASILYではサービスのマスタデータやログデータをGoogle BigQueryに集約して分析に活用しています。機械学習データ分析のための前処理を行う際、軽量なデータであれば抽出結果をPythonに渡して処理させることもできます。しかし、分析環境のメモリに載り切らないほど大きなデータを扱う場合、BigQuery内で前処理を済ませてしまうと時間と計算資源の節約になることが多いです。 今回はBigQueryからアクセスできるパブリックデータの1つ、hacker newsのデータを集計しながらTipsを紹介したいと思います。 欠落した日付を埋める 通常のGROUP BY句の場合 SQL Re

    BigQueryによるデータ分析のための前処理Tips - ZOZO TECH BLOG
  • MySQL のJOIN に関するメモ - LukeSilvia’s diary

    内容 FROM 句のテーブルの順番と、MySQL がテーブルをJOIN する順番は別 STRAIGHT_JOIN と eq_ref, ref eq_ref になるようにするために JOIN 条件の書き方 STRAIGHT_JOIN をいつ使うか 今回の検証に用いたMySQL は4.0.26。また、例として、以下のテーブルを用いる。(テーブルは、「逆算式SQL教科書」のもの) [study]> SHOW FIELDS FROM uriage; +-------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------+------+-----+---------+---------------

    MySQL のJOIN に関するメモ - LukeSilvia’s diary
  • YappoLogs: なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか

    なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか ここ最近の大規模サービス関連したデータページング考です。 mysql 5.5.34 で試して記事書いてます。 bigdata テーブルは id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) なカラムがある前提です。もちろん InnoDB です。 2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ - Togetterまとめが発端にみえるけど、わりと昔から話されてる事なんだけど、「nippondanji SQL_CALC_FOUND_ROWS」でググっても有用な情報ないし文書化されてないからしとく。 ページング処理で使われがちな機能です。 S

  • 2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ

    Masahiro Nagano / 長野雅広 @kazeburo 2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ 2014-03-06 13:10:10

    2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ
  • MySQLのクエリ集計手法いろいろ | Ore no homepage

    Webサービスを開発/運用してるモンとしては、いろんなWebサービスを触ってみなきゃアカンってことで、アメリカの若モンに大人気ってふれこみのsnapchatに登録してみた。これでリア充の仲間入りやと思ったが、snapchat友達が同僚二人しかいないうえに、利用シーンがあまり思い浮かばないww オジサン困っちゃいました。画像とか送信できるんだけど、数秒で消えるの。むしろそこがウリっていうね。どうやって遊ぼうか…。 2月はブログ書かなかったなーと思ったのでMySQL小ネタ。世間的にも自分的にも真新しくもなんともないTipsです。 innotopで集計 実は以前、Qiitaに書いたので↓をば。。。 http://qiita.com/la_luna_azul/items/505ca441b8c8e6a87aaa 流れるクエリ、ロックの状況、トランザクション(show engine innodb s

    MySQLのクエリ集計手法いろいろ | Ore no homepage
  • PostgreSQLでテストデータを作成する | Let's POSTGRES

    笠原 辰仁 記事は2013年のPostgreSQL Advent Calendar の 12/25 の記事です(地味なトピックになってしまいすいません)。PostgreSQLでのテストデータ作成に役立つ機能を紹介します。 はじめに PostgreSQLを対象としたの性能検証や機能検証を行う際に、開発環境や試験環境でスキーマ(テーブルやインデックス)を作成し、ダミーのデータを投入してSQLのチェックを行うことが多々あるかと思います。単純な機能の正常試験であれば少量のデータ投入で事足りると思いますが、大量のデータに対する検索処理やバッチ処理を試す際は、それなりの量の試験データを生成し、DBに投入する必要があります。 通常、試験データは、例えば専用のジェネレータを作る、実際のデータをマスキングしたものを使う、サンプルとして存在するデータ(郵便番号のデータなど)を利用する、といったことが多いと思

  • Oracle10gでのSQLチューニング - Do You PHP はてブロ

    今佳境のプロジェクトに突っ込まれていて、外部パートナーさんが作ったSQLをチューニングしているのですが、今回「え?そうなの?」と思ったことがあったのでメモ。どうせ次にやるときには、また忘れてるんで。。。(^^; 環境は Oracle 10g Release2 Standard Edition コストベースオプティマイザ ANALYZE TABLE ... SAMPLE 30 PERCENT な感じです。 OR条件をREGEXP_LIKE関数に変更する 当然indexの状態や式などモノによっても変わりますが、今回「複数カラムの値に対する複数のOR条件」をREGEXP_LIKE関数に変更するとかなりコストが変わりました。以下で、valA、valB、valCは同じSQL内の別ストアド関数で算出された値で1〜5です。 ■使用前 WHERE (valA != '1' OR valB != '3' O

    Oracle10gでのSQLチューニング - Do You PHP はてブロ
  • 1