SQL • リレーショナルデータベースシステムと会話するための言語 • 1970年 Codd が RDB モデルと同時に提案 (Alpha言語) • 1974年 Chamberlin と Boyce が改良 • 元々は SEQUEL (Structured English Query Language) だったが、商標登録されていた • 読み方は エスキューエル とそのまま読む (Glliespie 2012)
今までのインデックスについての自分の理解が、「インデックスを作ると検索スピードが上がる」くらいの理解でした。これではいけないと思い、ようやく真面目に勉強したのでそれをまとめるついでにクイズ形式にしてみました。 インデックスとは データベースにおけるインデックスは、データの検索速度を向上させるための機能です。一般的に、テーブル内のデータの特定の列に対して作成され、その列の値に基づいてデータにアクセスする際の効率を高めます。 よくある例でインデックスは本でいう索引に当たります。見たい項目を索引で探し、何ページかを確認してそのページを開けば一枚一枚ページをめくって探すより効率的に目当てのページに辿り着けますよね。 それをデータベースでも同じことをしているというイメージです。 第一問 以下 SQL 文でインデックスが使用される検索はいくつあるでしょうか?
let premium_users = select * from users where premium = 1; select count(*) from premium_users; select * from premium_users order by created_at; のようなことがしたいわけですよ。でも無理!ワハハ!! 一貫性のなさ cast(expr as type) という関数のようでそうでもない謎の記法とか(MariaDBリファレンスだと"function"らしいですが)、 '2023-01-01' + interval 1 secondのinterval部分は何なんだとか、文法が複雑すぎる。 人間に厳しい 一貫性を捨てても便利な記法を採用して書きやすくしているのかと思いきや、
Database schema migrations can be a double-edged sword. They are essential for keeping our systems up to date and in sync with evolving application requirements, but often come bundled with a set of challenges that can leave even the most seasoned developers and database administrators scratching their heads (or banging them on the keyboard). Breaking changes: One of the fundamental issues plaguin
はじめに 最近エンジニア界隈では「リーダブルコード」が話題なっていますね。 リーダブルコードでは、このような定理が紹介されています。 「コードは他の人が最短時間で理解できるように書かなければいけない。」 Dustin Boswell リーダブルコード P.3 より引用 SQLでも同じことが言えそうです。 リーダブルなSQLを書いてないと結婚できない時代が今まさに到来しようとしています。 皆さん、クソSQL1を読んだことがありますね? クソSQLを書いたことがありますね? 僕は、あります。 そこで、本記事ではどうしたらリーダブルなSQLが書けるかというアイデアを紹介します。 処理の流れの順に上から読めるようにする 人間のメンタルモデルは、問題やタスクを小さなステップに分割し、それぞれを順番に実行することに適しています。 サブクエリを使ったSQLでは、処理の流れは上から下ではなく、ネストされた
はじめに 今回は外部キーを張るときに最低限意識したいことについて書きました。 何か間違えがあったり、もっとこういうところも意識してますという人がいたらコメントお願いします。 この記事で伝えたいこと ①リレーションシップ先のデータを消したときに同時にリレーションシップ元のデータが消えても自然な状態を作る ON DELETE CASCADEをうまく利用できる状態を作る つまり親子関係を正確に表現する。 リレーションシップ先は親テーブル、リレーションシップ元は子テーブルを意味しています。 ②データを作成するときのことを考えてデータの生成順序がおかしくならないように外部キーを張る ③関連を表現するときに中間テーブルを利用したほうが良い場面がある 注意 下記【例を交えながら説明】の説明に出てくるテーブル設計に関しては、上記の【この記事で伝えたいこと】の①と②と③の項目に対して想像しやすいように、理解
あけましておめでとうございます! 今年は異世界放浪メシのアニメが放送されるらしいので楽しみなバックエンドの原田 (tomtwinkle)です。 内部で運用しているSQLレビューチェックリストの一部を抽出し思いつきで追記して行った結果、結構な分量になってしまいました。 暇な時でも流し読みして頂けるとありがたいです。 Motivation SQLレビュー観点 大きくSQLが変更される修正の際にはEXPLAINをレビュー内容に加える 検索のキーにINDEXを使用しているか SQL発行回数がN+1(1+N)の構造になっていないか サブクエリを利用したSQLはパフォーマンス要チェック Viewの利用は基本的に禁止 CROSS JOINは禁止 WHERE句で十分に絞った検索をしているか 必要なcolumnだけSELECTしているか レコード数だけ必要な場合にCOUNT用のSQLを発行しているか 集計関
秋のブログ週間の9本目のエントリーになります。この企画もこんなに書く人が出てくるように育っていいですね。 「中間層を増やして柔軟性を高めるのがソフトウェアの歴史」 これは大学時代に2つ上の先輩が言っていた言葉です。例えばマシン語を直接書くのではなく、アセンブラで書けば、変換(コンパイル)の手間はかかりますが、他のCPUへの移植はしやすくなります。高級アセンブラと名高いC言語を使えばさらに移植性は上がります。C言語で書かれたVMを使う言語、例えばJava、Python、Rubyなんかはさらに移植性は上がります。 ストレージもそうです。最終的にストレージはビット列を保存するものですが、それにOSのファイルシステムというレイヤーがあり、そこにスキーマで管理されたデータを入れるDBMSが乗っかり、SQLなどの問い合わせ言語でデータ取得できるようにします。DBMSを挟むことで、レプリケーションでバッ
MySQLの実運用とこれからについて掘り下げる「LINE Developer Meetup #73 - MySQL」。ここで登壇したのは、LINEの従業員でもある日本MySQLユーザ会のyoku0825氏。MySQL 8.0.28を選んだ経緯や評価のポイントについて説明しました。 セッションの要約と登壇者の自己紹介 yoku0825氏(以下、yoku0825):「ぼくらが選んだ次のMySQL 8.0」の話をします。私たちは、次のMySQLを8.0.28にしました。みなさんには、それぞれ29や30や自分の使いたいバージョンについて調べてもらいたいのですが、量が膨大になるので、今いるバージョンから新しいほうに向かって調べていくのではなく、最新のものからこれはダメだというものまで遡って調べていくのがおすすめです。 パラメーターに現れない、いきなり挙動が変わるかもしれないものは「What Is N
Shekhar Gulati Writings on Software Engineering, Software Architecture, and Engineering Leadership I spent some time going over the Postgres schema of Gitlab. GitLab is an alternative to Github. You can self host GitLab since it is an open source DevOps platform. My motivation to understand the schema of a big project like Gitlab was to compare it against schemas I am designing and learn some best
読者対象 ANSI 定義の古典的なトランザクション分離レベルとアノマリーは概ね理解している MySQL/Postgres では理論的な部分がどうなっているのかを知りたい 理論面の前提知識 2022-08-19 追記: 社内勉強会向けのスライドを作成しました。先にスライドを見てから,引用文献およびこの記事を読むと理解が深まると思います。 まず ANSI 定義の古典的な定義を聞いたことが無い方は,以下のリンクを参照されたい。 ANSI 定義に対応する解説はこれらのサイト以外にもたくさんあるため,自分にとって読みやすいと感じる情報をあたってほしい。(既に熟知されている方は十分) 次点で読んでいただきたいのが, @kumagi さんの以下の記事。古典的には 4 つの分離レベルと 3 つのアノマリーだけで説明されていたものの,不十分であることが学術的に指摘され,解像度を上げようとする流れが後になって
あなたが知らない既存機能があるかもしれません! マイクロソフト社は2006年、Microsoft Officeの新バージョンで追加してほしい機能について、顧客調査を実施しました。驚いたことに、ユーザが希望した機能の90%以上はすでに実装されており、その存在が知られていないだけであることが判明しました。機能の「見つけにくさ」の問題の解決策として同社が考案したのが、現在のMicrosoft Office製品でおなじみの「リボンUI」です。 この問題はOfficeに限ったものではありません。日々使用するツールの機能をすべて把握している人はほとんどいません。PostgreSQLのように大規模なツールであればなおさらです。数週間前にPostgreSQL 14がリリースされたばかりなので、この機会にPostgreSQLのあまり知られていない機能に注目してみたいと思います。 この記事では、Postgre
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く