はじめに MySQL8.0がリリースされたことにより、Window関数の利用が可能になりました。 Oracle,PosgreSQL、SQL Server等でも利用できる関数ですが、「難しそう」、「どういう場合に使えば良いかわからない」というイメージを持たれている方もいると思いますので、この記事ではシンプルにどのようなことが出来るのかを紹介します。 第一弾は、「集計関数×Window関数」のコラボです。 集計関数とは、MAXやSUMやAVG等のデータを集計する関数ですが、実はほどんどの集計関数がWindow関数として利用できます。集計関数の種類やWindow関数として利用可能かという点に関しては、以下のリファレンスに記載されておりますので、参照頂ければと思います。 ・MySQL 8.0 リファレンス マニュアル 14.19.1 集計関数の説明 データ準備 検証用に1つのテーブルを作成し、テス
概要 ネットでWhere句のORにindexが効くかどうか調べると、以下のような意見があって何が正解かわかりませんでした。なので、検証して真偽を確かめていこうと思います。 「OR演算子にインデックスは効かない」 「OR演算子にインデックスは効く」 「OR演算子の右辺はインデックスが効かない」 検証するDBはMySQL5.7.36です。 検証1 where句の片方の検索条件にindexがあり、もう片方の検索条件にはindexがないパターン country_id、laungage_idの2つのカラムを使います。 country_idにはindexが貼られていて、laungage_idには貼られていません。
【Unit4 ブログリレー3日目】 こんにちは,エムスリーエンジニアリンググループの榎田です.数学とテレビゲームが好きです. 今回は,Unit4 で運用している "Docpedia" というサービスで実施した SQL チューニングの実例を2つご紹介します.普段の私が意識していなかった, RDBMS の内部機構に関する話が登場して面白かったので,今回の記事を書きました. なお,本稿で扱う議論はすべて PostgreSQL 11.x 以上を対象としており,特にその他の RDBMS で同様の動作をするかは確認していません.定性的な挙動に共通するものはあるかもしれませんが,ここで述べた話はそのままは通らないであろうことをお断りさせてください*1. プロダクトについて index なしで意外と耐えたが,耐えきれなかった話 実際の SQL とテーブル定義 原因の分析 対応策 SELECT DISTIN
こんにちは、Development Teamの三宅です。 先日、社内(AI事業本部内)でSQL研修の講師を担当したので、今回はその内容について簡単に共有したいと思います。 はじめに 例年、AI事業本部では、新卒エンジニアの育成のためにソフトウェアエンジニア研修を行っております。今年はフルリモートでの実施となりました。研修期間は2週間ほどで、内容は前半が講義、後半が実践(チーム開発)でした。私が担当したのは、講義パートの一部であるSQL研修です。SQLやRDBにあまり慣れていない人でも、できるだけ体系的な学びが得られるようにすることを目標に、様々な資料をまとめて提供する方針で準備しました。結果的には、ハンズオン込みで4時間ほどのやや長い講義となりましたが、勉強になったという声も頂けたのでやって良かったと思っています。 研修資料 研修内容 SQL研修の内容は、基本的には大学のデータベース講義で
目次 はじめに 背景と目的 Databricksとは何か 機能紹介 共通 データエンジニアリング 機械学習 Databricks SQL おわりに はじめに こんにちは。Databricks の新井です。Qiita 初投稿です。 2022年の7月よりソリューションアーキテクトとして働き始めました。 お客様に弊社製品を知っていただき、導入いただく際の技術サポートを行う役割です。 本記事では Databricks にご興味がある皆様に弊社プラットフォームを理解いただくために、新入社員の目線から便利だと感じた10個の機能をまとめました。 今後も記事執筆を継続するモチベーションに繋がりますので「いいね」や記事の保存、SNSで共有いただけると嬉しいです。宜しくお願いいたします! 背景と目的 皆様の中には Databricks という会社に馴染みがない方も多いと思います。 米国カリフォルニア州に本社が
「日本国内でもトップレベルのスキルを持ったMySQLエキスパートは誰か?」 そう問われたときに、多くのエンジニアが名前を挙げる人物がいます。LINE株式会社のITサービスセンター データベース室 MySQL1チームでDBA(Database Administrator)として働くyoku0825さん*(@yoku0825)です。 日本人として3人目のMySQL分野のOracle ACEであり、2015年には「default_password_lifetime」の功績でMySQL 5.7 Community Contributor Awardに選出されたyoku0825さん。彼はひたむきに自己研鑽を続けるだけではなく、ブログ「日々の覚書」や技術イベントへの登壇などを通してMySQL関連の情報発信を行ってきました。 今回はそんなyoku0825さんに「これまでどのようなトレーニングをして、DB
読書感想文連載 の9冊目の記事です。 はじめに今回はエンジニア界隈で名著と名高いBill Karwin著「SQLアンチパターン」を読んだので書評をかいていきたいと思います。 私が基本的な研修を終えて、現場に配属後に「SQLを触ろう」となった際に、先輩に「アンチパターンさえやらなきゃいいよ」とアドバイスされたことがこの本を読むきっかけだったので、同じような境遇の初心者の方が現場でSQLを触ることになった時、最低限避けるべき項目の雰囲気を掴む、容易に確認することができる記事になれば幸いです。 本書のスタイルと本記事で注目すること本書は「データベース論理設計のアンチパターン」「データベース物理設計のアンチパターン」「クエリのアンチパターン」「アプリケーション開発のアンチパターン」の4部からなりそれぞれアンチパターンが数種類紹介されています。アンチパターンごとに「目的」「アンチパターン」「アンチパ
この記事はエムスリー Advent Calendar 2022の30日目の記事です。 前日は id:kijuky による チームメンバーのGoogleカレンダーの休暇予定一覧をスプレッドシート+GASで作った でした。 AI・機械学習チームの北川(@kitagry)です。 今回はMySQLへのインサートを20倍以上高速化した話について書きます。 仕事をちゃんとしてるか見張る猫 TL; DR はじめに 今回のテーブル バイナリログを無効化する 追試 LOAD DATA INFILE 追試 テーブルの正規化 インデックスを一時的に剥がす まとめ We are hiring!! TL; DR バイナリログをオフにする LOAD DATA INFILEを使う インデックスを一時的に消す はじめに AI・機械学習チームではサイトトップからアプリに至るまで多くの推薦システムがあります。 そこでは推薦ロ
第33回MySQLのオプションファイル my.cnfの豆知識[その2] yoku0825 2016-11-22
第217回MySQL ShellでJavaScriptを使ってMySQLを操作してみよう[その2] 木村浩一郎 2024-03-12
近年ではRedashやMetabaseのようなBIツールを簡単に導入でき、さらにはMySQLはバージョン8.0からwindow関数が利用できるようになり、より分析的なSQLを記述する機会が増えた読者もいるかも知れません。このような分析に利用するSQLを記述をすると、どうしても長いSQLになってしまいがちで、記述した当時は理解できても、時間の経過や他人のSQLを読み解くのは難しいときもあります。 そこで、今回は共通テーブル式(CTE)について紹介し、分析時に長くなってしまいがちなSQLの読みやすさ改善に少しでもお役にたてればと思います。なお、今回利用しているMySQLのバージョンは8.0.28となります。 CTEとは? CTEとはCommon Table Expressionsの略で、OracleやPostgreSQLにはすでにあった機能であるため知っている方もいるかもしれません。CTEは単
開発者向けのSQLインデックス解説サイト、管理についての間違いない知識を提供します。 インデックスは開発時には忘れられがちである一方で、非常に効果的なSQLのチューニング方法です。Use The Index, Lukeでは、HibernateなどのORMツールの解説にとどまらず、SQLのインデックスについて基礎から説明します。 Use The Index, LukeはSQLパフォーマンス詳解のWeb上の無料版です。サイトを気に入って頂けたら、ぜひ書籍も購入してみて下さい。また、このサイトの運営をサポートする様々なグッズも販売しています。 MySQL、Oracle、SQL ServerなどにおけるSQLのインデックスUse The Index, Lukeでは、ベンダにとらわれないインデックスの説明を心がけています。製品特有の事柄については、以下のような表示をしています。 DB2Use The
SQLのJOINには3種類のアルゴリズムあるということを最近知ったのでまとめてみる。 JOINのアルゴリズム Nested Loop Sort/Merge Hash 基本知識 DBMSごとの実装状況 Oracle 3種類全部 MySQL Nested Loopのみ PostgreSQL 3種類全部 外部表(駆動表)と内部表 外部表(駆動表) JOINするときのベースになる表。以下のSQLでいえば、table1 内部表 外部表にくっつける表。以下のSQLでいえば、table2 特徴 Nested Loop Join 外部表にある全行に対して、内部表から結合キー列の値がマッチするものを探して結合する 上記に関連して、外部表にあるレコードが少ないほうがループ数を少なくできるため高速にできる 内部表の結合キー列にインデックスがある場合、インデックスを用いて検索できるため高速に処理できる Sort
"Nested Loop Joinしか取り上げて無いのにタイトルが大きすぎないか" と指摘を頂いたので、タイトルを修正しました。Merge JoinとHash Joinのことはまた今度書こうと思います。 「JOINは遅い」とよく言われます。特にRDBを使い始めて間がない内にそういう言説に触れた結果「JOIN=悪」という認識で固定化されてしまっている人も多いように感じています。 たしかに、JOINを含むようなSELECT文は、含まないものに比べて重たくなる傾向があることは事実です。また、本質的に問い合わせたい内容が複雑で、対処することが難しいものも存在します。しかし、RDBの中で一体どういうことが起きているのかを知り、それに基いて対処すれば高速化できることも少なくないと考えています。 本稿では、JOINの内部動作を解説した上で、Webサービスを作っているとよく出てくるJOIN SQLを例題に
はじめに私が所属しているチームでは、ERDの管理およびDDL生成のために、A5:SQL Mk-2(以下A5M2)を利用しています。全員がそこまで使ったことがあるわけでなく、徐々にかゆいところに手が届く機能を知り利用してよかったと思っています。 そこで、開発を通して最初から知っていれば嬉しかったなという機能をまとめます。使いこなしているチーム(人)に確認したら全て当たり前に使っていたので、常識レベルらしいです。 A5:SQL Mk-2 - フリーのSQLクライアント/ER図作成ソフト (松原正和) なお、a5m2 ってどういう機能があるんだという方は、宮崎さんの A5:SQL Mk-2に回帰した話 を参照ください。また、SQLクライアントとして a5m2 を使う話はしません。余談ですが個人的にはSQLクライアントとしてはJetBrainsで特に有料製品を使っている方はDatabase Too
株式会社ラクーンホールディングスのエンジニア/デザイナーから技術情報をはじめ、世の中のためになることや社内のことなどを発信してます。 パフォーマンス勉強会OracleデータベースMySQLInnoDB こんにちは、羽山です。今回はOracleデータベースのチューニングで少し踏み込んだ内容です。途中で比較対象としてMySQLも登場します。 日頃からSQLチューニングの機会があってそれなりに得意としているのに、それでもなぜかパフォーマンスがでないSQLに悩んだ経験はありませんか? 謎の遅い現象は特に大規模データベースになってくると発生しがちなのですが、速い場合も遅い場合も必ず理由があります。そこで本記事ではデータベースのチューニングにおいて意外と見落とされがちなローレベルな部分に着目して、さらに一歩上のパフォーマンスチューニングに必要な知識を解説します。 この記事を書くきっかけとなったのは私た
この本では、データベース構築経験が初心者・入門者の方々に向けて、データベース構築に必要な知識(SQLを中心)を1時間ほどでサクッと理解できるようにまとめました。※短時間での走り切りをゴールとしているため、細かい説明は省略されています。 【概要】 ・内容:データベース基本知識 / 用語、SQLとは、NoSQLとは、NewSQlとは、データモデル(概念モデル / 論理モデル / 物理モデル)、SQL命令言語(DML / DDL / TCL / DCL)、SQLの環境構築、SQLの基本文法、SQLによる絞り込み、SQLによるデータ加工、SQLによるテーブル処理・分析、SQLによる複数テーブルの処理、SQLによるトランザクション処理 ・所要時間:約1時間 ・必須条件:パソコン操作 ・推奨OS:なし ・レベル:★★☆☆☆
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く