Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

重複行を削りたいならunionを使う。重複行を生かしたいならunion allを使う。 ここまではよいとして、どっちでもよい場合、例えば 重複行があり得ない場合 IN句のサブクエリなので重複行があってもなくても結果に影響しない場合 にどうするか。 以前はunionをデフォルトにして、重複行を生かしたいときだけunion allしていたが、今は逆に、union allをデフォルトにして重複行を削りたいときだけunionする、という方針にしている。理由はいくつかあるが、allを付けると Sort->Unique の処理が走らないのでパフォーマンス上有利になるはず、というのが大きい。 絶対に重複行が発生しないことが分かっているクエリでも、unionを使うとSort->Uniqueの処理が走ってしまうDBMSは多い。 例えばPostgreSQL: UNION bench=# explain ana
こんにちはfukasawaです。ダイエットのためにアンクルウェイトを購入したのですが、足首が太すぎて巻けませんでした。痩せねば。 さて、今回はMySQLの日付時刻関数を使用して、日付、時刻の差分を取得する方法についてです。PERIOD_DIFF(),DATEDIFF(),TIMEDIFF(),TIMESTAMPDIFF()を使用して日付や時刻の差分を求める方法について調べてみました。 ※MySQL 5.6.14で検証しています DATEDIFF(expr,expr2) 開始日 expr と終了日 expr2 までの日数を取得します。(v4.1.1以降) SELECT DATEDIFF('2013-12-31','2013-02-20'); -> 314 SELECT DATEDIFF('2013-12-31','2014-02-20'); -> -51 SELECT DATEDIFF('2
以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ
-eオプションでSQLを実行する。 mysql -uroot -e "show tables" -eオプションはトランザクションに注意。 以下はトランザクションは効いていません。 mysql -uroot -e "begin;" date mysql -uroot -e "insert into hoge values(1, 2, 3);" date mysql -uroot -e "commit;" トランザクションが効かない理由は簡単です。 mysqlコマンド毎にコネクションが切れているからです。 従って、-eオプションでトランザクションを有効にするには、以下のようにワンライナーにするしかありません。 mysql -uroot -e "begin; insert into hoge values(1, 2, 3); commit;" bashの変数をSQLに埋め込む事も可能です。以下は
MySQLレベルでの話。 最近SQLの細かい挙動とか、しっかり把握しきれてないなーとか、 一度覚えたことが年が経ってあやふやになってるところが多くある。 また勉強し直したい。 RDBMSとうか、KVSだのNoSQLだのDBのシステムによって大きく違うと思うけれど、 私はMySQLとちょっとPostgreSQLとかSQLiteとか触ったくらいなしょっぱい男です(先の言い訳)。 主に扱うのはMySQLで、そのくらいしかついていけません(わかるとは言いません)。 「MySQLってそうなんだ〜。Oracleだとこうなんだよー、きゃははー」とか言われても、しょんぼりとしかしません。 本題。 Rails使ってると、マイグレーションファイルでDBのテーブル定義して、 rake db:migrateでマイグレーションファイルを元にテーブルが作成されちゃう。 ここで使うDBによって、うまいこと作られる型に差
新しいアプリケーションの機能を実装する際に、ローカルや開発者向けのデータベースにアクセスして、プログラムを実装する前に何度かSQLをためしに実行することもあるかと思います。その際に、補完機能や以前実行したSQLの検索機能等がある場合とない場合では、作業の効率が変わってきます。 そこで、今回は補完や検索機能など、多くの便利な機能をもつmycliというクライアントについて紹介をしていきます。 デモンストレーション環境 今回は5.7.12を第5回 Dockerで複数バージョンのMySQLを開発環境に用意するで作成した環境で実行して確認していきます。また、今回使用するデータは「第2回 MySQLにはじめてのデータを入れてみる」で紹介をしている郵便番号のテーブルを用いて紹介を行います。 mycliのインストール ここではMySQLのクライアントの1つであるmycliを紹介します。mycliは自動補完
DoctrineでSQLの日付関数を使う方法 Symfony Advent Calendar 2015 第一日目の記事です。 http://qiita.com/advent-calendar/2015/symfony Symfony+Doctrine2でシステムを開発していて、「日付何年のデータだけほしい」、「何年何月のデータだけほしい」という場合。 どう対応していますか? DateTimeで頑張る まず、もっとも基本的なやり方として、DBから全件取得したうえで条件を満たすもののみの配列を作るという方法があります。 たとえば、今月ログインしたユーザーを取得したいなら、下記のようになります。 $today = new \DateTime('today'); $activeUsers = array_filter($em->getRepository('AcmeDemoBundle:User'
オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。 結構人気(?) のこの記事、ざっとよもうと思ったら最初に誤植(?) があったので、通読してまとめておきます。。。。 [2014-10-09 12:00 追記] 現時点までに更新があり、下記指摘はほとんど修正・更新されているようですが、とりあえず記録のために本エントリは残しておきます。「誤植や誤記ねえじゃん」といわないでください。指摘の後更新されたので。。。。 SQLの観点から「Oracle Database」「PostgreSQL」 「MySQL」の特徴を整理しよう!(DBonline) なお、
MySQL のプロンプトから、外部ファイルに記述した SQL 文を実行するためには、source コマンドを利用する。mysql > source (text_file_name) また、Windows のバッチファイルを利用して外部ファイルの SQL 文を実行する場合は、リダイレクトを利用すればよい。 C:\> mysql -u username -ppassword < sql.txtユーザ名が "username"、パスワードが "password" である場合、sql.txt に記述した SQL 文は、上記のように実行することができる。 この場合、-p と password の間に空白は不要である。
Cheatography https://cheatography.com Download This Cheat Sheet (PDF) 2 CommentsRating: () Home > Programming > MySQL Cheat Sheets MySQL Cheat Sheet by DaveChild A cheat sheet for the MySQL database. MySQL Data Types CHAR String (0 - 255) VARCHAR String (0 - 255) TINYTEXT String (0 - 255) TEXT String (0 - 65535) BLOB String (0 - 65535) MEDIUMTEXT String (0 - 16777215) MEDIUMBLOB String (0 - 167772
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く