mysql
kamipoさんが補足を書いてくれたので、参照するとよいです。
とあるサービスでslow logをみていたら、どこかの記事で読んだことのあるクエリがでてきたのだけど、もうちょっと速くできないものか、と考えてみた。結論を言えば、 BEFORE: SELECT sql_no_cache COUNT(*) FROM (SELECT item_id FROM category2item WHERE c…
後輩に訊かれてどうだったっけ?と思って調べたので、まとめておく。 まとめ text型でINSERT時に明示的に情報を入れない場合、カラムがNOT NULLであったときは、""が入る。NOT NULLでない場合はNULLが入る。 作業ログ # not null制約をつけている場合 mysql> …
facebookの「いいね!」やはてなstarみたいなものを自分でつくるとすると、どういうschemaにするかなーということで、ちょっと考えてみた。(mysql 5.1以上) create table user ( id int unsigned not null auto_increment, primary key id(id) ) ENGINE=InnoD…
メンテナンスなどで、マスターデータを書きかえるときは、 use strict; use warnings; use DBIx::Handler; my $db = DBIx::Handler->new("dbi:mysql:test;", "root", "", { RaiseError => 1}); $db->dbh->do(q{ CREATE TABLE IF NOT EXISTS hoge ( id int un…
巨大なtableへのalter tableが必要になったのだけど、enumへのalterって確か最適化してくれたんじゃなかったっけな、ということで、一応確認のため検証してみる次のschemaを用意します。 CREATE TABLE `enum_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, …
jobが一日あたり何件ぐらい投入されているのか、お手軽に確認できるようにするのに、MySQLのtriggerを使ってみるとどうだろ、ということでやってみた。まず普段のqudoのschemaに加え、以下のようなテーブルを追加します。 CREATE TABLE `job_counter` ( `enq…