タグ

MySQLに関するmaricar9710のブックマーク (15)

  • MySQL のサブクエリって、ほんとに遅いの? | DevelopersIO

    こんにちは、みかみです。 今日のクラスメソッドのAWSおみくじ、RDS(t1.micro)でしたー!(昨日は Aurora!@@v はじめに 前職@アプリ開発時、MySQL のクエリチューニングをさせていただく機会がありました。 ユーザー入力のキーワードで全文検索 → 見つかったレコードを返すのですが、所要時間、約3分。。 Apache タイムアウトして画面真っ白。。。(泣きそうでした><。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリの

    MySQL のサブクエリって、ほんとに遅いの? | DevelopersIO
  • データベースリファクタリングについて話をしてきた #OSO2017 - そーだいなるらくがき帳

    岡山にはオープンセミナー岡山と言う最高のイベントがあります。 okayama.open-seminar.org 昨日は id:t-wada さんや id:naoya さんの資料がホットエントリー入りしてました。 この登壇はそれと同じイベントになります。 その他の方も超豪華講師陣の中で、私が出来る精一杯の経験も踏まえたお話をさせていただきました。 speakerdeck.com この中で出て来る、データベースリファクタリングは当に素晴らしいです。 OracleベースなのですがMySQLだろうがPostgreSQLだろうが必ずためになるです。 ですが、このは既に廃刊になっており再販の予定もありません… 僕は後世に絶対必要なの一つだと思っているので再販のためにも皆さんの要望の声を上げていただけるとうれしいです。 そしたらもしかしたらが世に復活するかもしれません。 またSQLアンチパタ

    データベースリファクタリングについて話をしてきた #OSO2017 - そーだいなるらくがき帳
  • MySQL と寿司ビール問題 - かみぽわーる

    MySQL と Unicode Collation Algorithm (UCA) - かみぽわーる に関連するトピックで、 MySQL には寿司ビール問題というのがある。 寿司ビール問題どっかで詳しくお話を聞くべきだよなぁ。。。— RKajiyama (@RKajiyama) March 18, 2015 これはどういう問題かというと、 MySQL の Unicode では binary collation にしてコードポイントで比較しないと🍣と🍺に限らず絵文字が同値判定されるという問題です。 あれ? MySQL の utf8mb4 charset って、4バイト文字同士を比較すると同じ文字扱いされる? SELECT '🍣'='🍺' → 1 MySQL的には寿司とビールは同じ扱い。— とみたまさひろ (@tmtms) December 22, 2014 MySQLで select

    MySQL と寿司ビール問題 - かみぽわーる
  • マーケティング担当者にSQLを完全マスターさせた話 - Qiita

    普段開発とかしない人達にもデータベースに簡単に触れられるようにしたお話です. 安全なデータベースを作る 番サービスのデータベースと同等,だけど個人情報的なものは隠しておきたい,よく聞く話ですね. これについては様々なアプローチがあるようですが,できる限り安定させたい&バッチでやるにしてもサーバの面倒を見たくない,とう方針のもと,RDSのスナップショットを利用して作成することにしました. 処理の流れ RDSが1日1回スナップショットを取っている(これはRDSの機能) RDSのスナップショットが取られると,RDSからイベント通知が投げられるので,SNS→SQSへ届くようにしておく(これもRDSの機能) CloudWatchでSQSのキュー数を監視するようにしておき,キューが1つ以上になると処理用のインスタンスを立ちあげる設定にしておく(CloudWatch,AutoScalingの機能) イ

    マーケティング担当者にSQLを完全マスターさせた話 - Qiita
  • 更新系SQLを手で打つときに気をつけていること

    WHERE条件をつけまくる UPDATE user SET age = 35 WHERE id = 1 AND name = 'Songmu' AND age = 34 idだけで絞れるけど name も付けてレビュワーフレンドリー 変更前の値も条件に含める 34 -> 35になることがわかる 間違えていた時も戻せる ユーザー操作とのコンフリクトを検知 万が一履歴から誤爆しても更新されない(可能性が高い) SETとWHEREを一行にまとめてるのは変なところで小指が滑るのが怖いため WHERE条件応用編 UPDATE user SET weapon_id = (SELECT id FROM weapon WHERE id = 100 AND name = '村正') WHERE id = 1 AND name = 'Songmu' AND weapon_id = (SELECT id FRO

  • PHPでPDOを使ってMySQLに接続、INSERT、UPDATE、DELETE、COUNT、SUM - Qiita

    今まで mysql... 系を使用していましたが、PHP5.5以降は非推奨となり、将来的には削除される予定らしいので、PDOの使用に変更しようと思い、まとめてみました。 プリペアドステートメントでINSERTすると安全に値を渡せるとか、結構便利みたい。 Manualとか色々読んだけど、分かりにくい言葉が多かったので、自分なりに解釈を書いています。 PDOとかプリペアドステートメントの説明 こっちのページに詳しく書いています。 言葉の意味分からんわー。みたいな時は是非読んでみてください。 PDOでMySQLを色々やる。 まずメソッドや引数をちょっとまとめました。 今後増やしていこうと思っています。 メソッドや引数 内容

    PHPでPDOを使ってMySQLに接続、INSERT、UPDATE、DELETE、COUNT、SUM - Qiita
  • 分割と整合性と戦う

    2. 自己紹介 清水 佑吾 @yamionp 株式会社 gumi 勤務 Python歴約2年半 サーバーさわりはじめて約10年 前職はISP

    分割と整合性と戦う
  • B-treeインデックス入門 - Qiita

    B-treeがMySQLで使用されている背景から、B-treeインデックスの構造、そしてそれに基づいたインデックスの使用方法の入門編です。以下の流れに沿ってまとめていきます。 インデックスってなに? B-treeってなんでインデックスに使われているの? B-treeインデックスの構造 インデックスの使用方法 ※ 勉強をかねてまとめていることもあり、間違っている箇所がございましたら教えていただけると嬉しいです。 インデックスってなに? 全体の内容の中から特定部分を探すために使用する、の索引のような概念のことです。これを用いることで、検索を高速化することができます。 特定の項目がのどこに載っているかを確認するために索引を調べることで、全ページを順に調べなくても、その項目が登場するページ番号がわかる MySQLのストレージエンジンでも、インデックスが同様の方法で利用されており、インデックスの

    B-treeインデックス入門 - Qiita
  • インデックスの基礎知識

    ■ インデックスとは データベースの世界で、インデックス(索引)とはテーブルに格納されているデータを 高速に取り出す為の仕組みを意味します。 インデックスを適切に使用することによってSQL文の応答時間が劇的に改善 される可能性があります。 インデックスにはB-Treeインデックスをはじめ、ビットマップインデックス、 関数インデックスなどの種類がありますが、ここでは最も一般的に使われ、かつ ほとんどのDBMSでサポートされているB-Treeインデックスについて解説します。 ※ CREATE INDEX文でオプションを指定しない場合は通常B-Treeインデックスが 作成されます。 ■ B-Treeインデックスのしくみ B-Tree(Balanced Tree)インデックスは次のようなツリー状の構造になっています。 ツリーの先頭はヘッダブロックと呼ばれています。ヘッダブロックでは、キー値の 範囲

  • MySQL Cluster:NoSQL+SQL、NoSQLも使える高可用性インメモリRDBMS | Think IT

    MySQL Clusterとは? MySQL ClusterはMySQLとは開発ツリーの異なる別製品で、共有ディスクを使わずにアクティブ−アクティブのクラスタ構成が組めるリレーショナルデータベースです。単一障害点が無い構成を組むことができ、可用性が高いため、米国海軍の航空母艦における航空機管制システムなど、ミッションクリティカルな分野でも多く利用されています。また、デフォルトではデータをメモリ上に持つインメモリデータベースであり、トランザクションを高速に処理できるため、リアルタイム性が求められるアプリケーションにも向いています(インメモリデータベースであっても、データの永続性は担保されています)。 MySQL Clusterの基礎となっている技術は、通信機器ベンダのエリクソンで携帯通信網の加入者データベース向けに開発された Ericsson Network DataBase(NDB)と呼ば

    MySQL Cluster:NoSQL+SQL、NoSQLも使える高可用性インメモリRDBMS | Think IT
  • PHPでデータベースに接続するときのまとめ - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。PDO に関しては大きく変わっていない部分が多いとは思いますが, PHP 8.x 以降での動作保証はありません。 あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼っておきましたので,「該当するかも?」という人はクリックして飛んで読んでください.太字にしてあるものは脆弱性に直結する危険度の高いものです. mysql_query などの非推奨関数を利用している SET NAMES あるいは SET CHARACTER SET などで文字コードを指定している そもそもデータベース

    PHPでデータベースに接続するときのまとめ - Qiita
  • MySQL使いが知るべきPostgreSQLとの違いと変わらない一つのこと

    — そーだい@初代ALF (@soudai1025) 2015, 8月 24 とブーメラン投げて見事に刺さってるので今から記事書く。 両サイドにはかなり厳しい話もするが俺の音を聴いておけ(関白宣言) まぁ歴史の長いRDBなのでお互いの比較記事は沢山ある。 なのでマルチスレッド(MySQL)とマルチプロセス(PostgreSQL)だとかVACUUMだって話はしない。 むしろ実際に使ってみた際の違いをにフォーカスする。 1. SQLの違い 基的にMySQLでやっていたことはPostgreSQL出来る。 しかし関数の挙動の違いは幾つかある。 例えば時間から曜日に該当する数字に変換した場合に MySQL → date_format(time,"%w") 0から始まり、日曜日に該当する PostgreSQL → to_char(time,'D') 1から始まり、日曜日に該当する など挙動に互換性

    MySQL使いが知るべきPostgreSQLとの違いと変わらない一つのこと
  • MySQLか、SQLiteか。それぞれのメリットとデメリット。 » とりあえず9JP

    MySQLのメリット ・SQLiteと比較して高機能なので、SQLiteでは使えない関数や手法が使える ・IDEとかで標準対応しているので、開発しやすい ・ネットに情報があふれているから情報集めに苦労しない ・洗練されたDB管理ツールphpMyAdmin が存在する。 (SQLiteにも複数の管理ツールが存在するけど、個人的に使い勝手が良いとは言い難い) ・公式のドキュメントが充実している ▼MySQLのデメリット ・仰々しいし重々しい ・個人的に、MySQLを使う=比較的大きなプログラムを組む時という認識があるので、何となくストレスを感じる ▼SQLiteのメリット ・PHP5以上?とApacheが動作する環境であれば動作するので、「どこのサーバで動かすー」とかそういった事を気にしなくて済む。 ・MySQLより軽快に動作する気がする ・個人的に、SQLiteを使う=小さい簡単なプログラ

  • 【DBまとめ】MySQLからPostgreSQL,SQLiteまで - Qiita

    PostgreSQLは、MySQLと双璧をなすオープンソースのRDBMS製品です。 オープンソース製品の中では機能が豊富かつ標準SQLへの準拠度が比較的高い。 ABOUT 標準SQLへの準拠度が高い CPU数が増えた場合のスケーラビリティが高く、接続数が増えても性能が維持される マルチバイト対応 PostGISというGIS(地理情報システム)を扱うアドオンソフトがあり、使い勝手が比較的良い OTHERS テーブル名などは大文字小文字を区別しない 大文字を使いたい場合は"を使用する必要がある DDL文もトランザクション処理の一部として管理されるため、コミット前であればロールバックによりキャンセルできる テーブル定義時にAUTO_INCREMENT指定を列に加える事で連番を振ることができる SQLiteはアプリケーションの一部に組み込まれて動作するタイプのオープンソースのRDBMS。 大規模利

    【DBまとめ】MySQLからPostgreSQL,SQLiteまで - Qiita
  • テーブル構造を変更する(ALTER TABLE文)

    テーブル名/インデックス名/カラム名を変更する(ALTER TABLE RENAME文) 作成済みのテーブルに対してテーブル名の変更やカラム名の変更を行うには ALTER TABLE RENAME 文を使います。書式は次の通りです。 テーブル名の変更 ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name インデックス名の変更 ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name カラム名の変更 ALTER TABLE tbl_name RENAME COLUMN old_col_name TO new_col_name

    テーブル構造を変更する(ALTER TABLE文)
  • 1