いや、これはすごいな。 update books set price = CASE WHEN price < 250 then price * 1.5 ELSE price * 0.9 END; 見ての通りpriceが250円未満なら1.5をかけ、それ以外なら0.9をかけている。自己結合したい場合など、これを使えば結合しなくても良さそう。MYSQL使いは覚えておいたほうがいいかもなー 実際にこういうSQLを発行してみました update items set cost_price = CASE WHEN price = 1900 then cost_price = 950 WHEN price = 1500 then cost_price = 650 ELSE cost_price END where maker_id = 30; 実際にあった例ですが、あるメーカーの商品で1900円の定価の
自動的に作成されるインデックス(主キー制約と UNIQUE 制約) クラスター化がある場合の非クラスター化インデックスの内部構造 カバリング インデックス(複合インデックス) 付加列インデックス(Include オプション) 自動的に作成されるインデックス(主キー制約と UNIQUE 制約) PRIMARY KEY(主キー)制約または UNIQUE 制約を設定している場合は、自動的にインデックスが作成されます。デフォルトでは、PRIMARY KEY制約の場合には「クラスター化インデックス」、UNIQUE制約の場合には「非クラスター化インデックス」が作成されて、インデックスの名前は制約の名前と同じになります。 どちらの制約もデータを一意に保つためのものなので、この列を検索条件に指定した場合は、必ず 1件の検索結果が返ります。インデックスは、大量のデータの中から数件のデータを取り出すときに最も
SQL Server の負荷かけツール (ストレステスト) についてメモを。 あと、えろす師匠 と 錦の鬼 っていうイメージ戦略をしろって 縄神様 に言われていた気がするので頑張りたいと思います。 # トップダウンアプローチで仕方なくイメージ戦略しているんです…。 ■SQL Server をインストールしないで実行 SQL Server をインストールせずに、ツールから SQL Server の I/O パターンを発生させて、テストを実施するためのツールとなります。 主にストレージに対しての性能検証をする際に使用することになるかと。 SQLIO SQLIO Disk Subsystem Benchmark Tool 下で紹介している SQLIO の CUI 版となります。 MS のドキュメントでは SQLIO を使用したディスクの性能テストを実施しているケースが多いかと思います。 SQLI
SQLServerについて SQLServerのインデックスについて学ばせていただく機会があり、ものすごく勉強になったのでまとめます。 はじめに 他のDBと同様にSQLServerにもインデックスの概念は存在します。 インデックスとは、DBデータの検索を高速に行うための索引のようなものです。 これがあることによって、データベース内すべてを検索せずに目的のデータを特定することができる便利なしくみです。 SQL Serverにおいてインデックスの種類は以下のようになっています。 ヒープ表(インデックスなしのテーブル) クラスタ化インデックス 非クラスタ化インデックス 複合インデックス 付加列インデックス インデックスは大きく分けてクラスタ化、非クラスタ化にわかれ、非クラスタ化インデックスの中に複合インデックスや、付加列インデックスといったものがあります。 これらを順に説明していきます。 ヒープ
仕事やらなんやらでMySQLのクエリの良し悪しを判断する必要があるとき、EXPLAINの内容だけだとどのぐらい良くなったり悪くなったのか分からないので SET long_query_time = 0; してrows_examined (そのクエリでrows_sent行の結果を返すために何行に触ったのか)も一緒に提示するようにしている(少なくともMySQL 5.7時点ではrows_examinedはslow_query_logでしか確認できないはずperformance_schemaが有効ならevents_statements_historyやその仲間たちで確認できるとのこと*1 MySQL :: MySQL 5.6 リファレンスマニュアル :: 22.9.6 パフォーマンススキーマステートメントイベントテーブル)。 例: 上の例のBeforeは、もともとDBAが書いた温かみのあるSQLでO
Photo by Brent Ozar こんにちは。谷口です。 エンジニアを目指している、もしくはエンジニアと一緒に仕事をしている方の中には「SQLを学習したい」という方も多いでしょう。もちろん、エンジニアでも「なんとなくSQL使ってるけど、実は苦手……」という方は少なくないと思います。 ただ、「SQLを勉強したいけど、実際に触って試せるデータベースがない」という方は多いですよね。SQLは実際のデータベースがないと操作ができないので、勉強したくてもなかなかできないのが難点でした。 paizaにも「もっとSQLを触りたい、実践的な問題が解きたい」といった声が多く寄せられています。そこで今回はSQLの練習問題がたくさん解ける学習コンテンツを7件ご紹介します。 【目次】 ■SQLとは? ■SQLの問題がたくさん解ける学習コンテンツ ◆Progate ◆Codecademy ◆paizaラーニング
「なんか遅いから早くして(意訳)」という仕事が回ってきた。大量データ投入後の試験待たずとも、遅いのは前々から分かってたから覚悟は出来てたんだけど・・・人外魔境と化したコードにどう手を入れたもんですかねぇ。 さて。何はともあれ計測一番。SQL Server Profiler を起動して、ブラウザから遅いといわれる機能のボタンを押してみる。・・・とスクロールバーがあっという間に小さくなってしまった。すごい参照系だなぁと思いつつ発効されたクエリ数を見るとその数 400。400 個の SELECT で出来てる画面って・・・一体・・・。 ログを見ると似たようなクエリを大量に出してるので、そういう個所を一つずつ作り直すしかないかなぁ・・・と思っているとログの中に 1 分近くかかっているクエリを発見。このクエリもまた数回走っており、一回ボタン押したら 5 分くらい返って来ない主原因になっている様子。 で
この記事は昔書いた記事をブログから移行したものです。 UPDATE SET FROM JOIN (WHERE) の挙動にはクセがある! SQL Serverで他のテーブルの値でUPDATEしたい、ってときは、UPDATE SET FROM JOIN (WHERE)という構文がよく使われると思います。いまぼくが携わっているプロジェクトでもよく使われていたんですが、ぼくにはあまりよくわかりませんでした。と、いうことで、一体どういった動作をするのか検証してみました。 お急ぎの方のために結論を先に申し上げておきます。 キホンは、JOINしたレコードの値でUPDATE JOINの結果が0件になると、UPDATEされない 複数行JOINできてしまったら、TOP 1した結果でUPDATE です。それでは以下で詳しく説明していきます。 ここでは、STUDENTが受講したテストのSCOREを記録するというサ
エクセルのデータからRDB用のSQLを作成するマクロです。シート名をテーブル名、1行目をテーブルのフィールド名として処理します。 サンプル 作成されるSQL INSERT INTO bookmark (ID,URL,TITLE) values (0,'http://www.google.co.jp/','GOOGLE'); INSERT INTO bookmark (ID,URL,TITLE) values (1,'http://www.yahoo.co.jp/','Yahoo! JAPAN'); マクロ Option Explicit Sub createInsertSql() Dim newbook As Workbook Dim currentCell As Range '前処理 Dim srcSheet As Worksheet Set srcSheet = ActiveSheet
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く