タグ

2021年10月5日のブックマーク (5件)

  • Rails(ActiveRecord)で自在にSQLを書く手段いろいろ

    こんにちはー。 Railsである程度の規模の開発をしていると、ちょっと込み入った形のSQLでデータを取得したい状況が発生してきます。 今回は、そんなときに役立つActiveRecordクエリのテクニックをご紹介します。 ちなみにexecute()、arelは使いません。 (環境: Ruby 2.5.3, Rails 6.1.3) selectをゴリゴリ書く ActiveRecordのselectというメソッドがあります。 基的な使い方としては、こんな感じで、必要なカラムだけ取得するためのものです。 users = User.all.select(:id, :name) users.first.attributes # => {"id"=>1, "name"=>"Alice"} なんですが、SELECT句を文字列で好きに書くこともできます。別名を付けておくことで、その名前で値を取得できます

    Rails(ActiveRecord)で自在にSQLを書く手段いろいろ
  • Railsの生SQL概要:execute, select_all, find_by_sqlの使い方を覚える - Qiita

    Railsの生SQL概要:execute, select_all, find_by_sqlの使い方を覚えるRailsActiveRecordSQL Railsで使用する生SQL Railsにおいて、ActiveRecordのwhere等では表現できない複雑なクエリを使用してDBのデータを取得する場合、生でSQLを書く必要が出てくると思います。 しかし、AcitiveRecordで生sqlを実行するメソッドは数多くあり、用途によってどれを使用すべきか分からないという方もいるのではないでしょうか。 そこで今回はよく使用されるであろう、execute/select_all/find_by_sqlについて、どのように呼び出すのか、戻り値はなにか、どのような用途で使用すべきかについて説明します。 先に結論を書いておくと execute -> クエリの実行 select_all -> セレクト文の結果

    Railsの生SQL概要:execute, select_all, find_by_sqlの使い方を覚える - Qiita
  • MySQLでインデックスの追加・確認・削除を行う方法 - プロエンジニア

    1.1 インデックスとは インデックスとは、データベース内から特定のデータを検索しやすくするための仕組みです。 インデックスにはいくつか方式がありますが、MySQLで使われているのはB-Treeという方式です。B-Treeの仕組みをざっくりと説明すると、インデックスを貼られたカラムは検索しやすいようツリー構造に加工され、テーブル体とは別の場所に保存されます。検索する際にはその加工したデータの方を見に行くことで、高速化を図っているのです。 1.2 インデックスを貼るメリット インデックスを貼るメリットは、先ほど述べたとおり検索の高速化です。適切なカラムにインデックスを貼っておくことにより、インデックスなしの状態よりかなり高速化することができる場合があります。ただしインデックスを貼る対象はなんでもいいというものではなく、どんなSQL文を多用する予定であるかを考え、実行計画を確認しながらきちん

    MySQLでインデックスの追加・確認・削除を行う方法 - プロエンジニア
  • [MySQL Workbench] VISUAL EXPLAIN でインデックスの挙動を確認する

    Lookup: where col = 1 のような等価比較 VISUAL EXPLAIN でインデックスの挙動を確かめる(題) 題です。青→赤の順にコストが大きいことだけ分かっていれば、詳細に見方を覚えなくても使えます。 今回使うのは下の2つのテーブルです。どのユーザがコンバージョンしたかを持っておく cv テーブルと、それが紐付く広告の ad テーブルです。 今回実験のためにざっくり作成したデータについて下に列挙します。 インデックスは簡単のためこの時点で PRIMARY KEY のみ cv は約100万件、 ad は約4000件 cv の status と ad の type はそれぞれ10種類で偏りなし 時刻を保存するカラムは UNIX TIME でここ一ヶ月のデータを格納 ER 図はせっかくなので MySQL Workbench で出力しました。 Workbench は外部キ

    [MySQL Workbench] VISUAL EXPLAIN でインデックスの挙動を確認する
  • Gboard チームからの新しいご提案

    Gboard チームは、いつでもどこでも思いどおりの文字入力を提供すべく、日々努力を重ねています。Gboard は、優れた変換性能にくわえて、お好きな写真を背景にできるテーマ機能や、外国語への翻訳機能などの便利な機能をそなえたキーボード アプリです。 Android と iOS のどちらでもご利用いただけます。 私たちは、ユニークな文字入力環境を実現するために、これまでにもさまざまなキーボードやデバイスを提案してきました。 そして今回もこれまでのキーボードと同様に、実際にご家庭で作っていただける DIY キーボードをご紹介します。 お茶を飲んでいたら、湯呑みを倒してキーボードにお茶をこぼしてしまった。そういうお茶目ながらも苦々しい失敗をさけるために、我々が新しく考案したキーボードです。 Gboard 湯呑みバージョンは、円筒形にキーを配置することにより、その中心部分に収納スペースを内包して

    Gboard チームからの新しいご提案