【MySQL】 join したテーブルをUPDATE(更新)する。【仕様?不可能?】


SQLの記述をみて、技術者の差がでやすい inner join やleft join構文ですが、(もうねー、サブクエリは、なるべくjoinで回避して、サブクエリ使わないでください。といいたい。)
これにからめてUPDATEはできるのでしょうか?
これらの構文がパットと思い浮かぶ方は、あらすごい!
出来ない方は、今日ここで覚えておきましょう。
まず、できるか否かですが、できますん

(1)通常のUPDATE構文
UPDATE tableA SET A.col1 = "hoge" WHERE A.col1 = "pugya";

(2)INNER JOIN を絡めたUPDATE構文
UPDATE tabelA
inner join tableB on TABLEA.col2=TABLE.col2
SET A.col1="hoge"
WHERE A.col1 = "pugya" and tableB.col3="dogya";


(3)LEFT JOIN を絡めたUPDATE構文
UPDATE tabelA
left join tableB on TABLEA.col2=TABLE.col2
SET A.col1="hoge"
WHERE A.col1 = "pugya" and tableB.col3="dogya";


これらを知っとくと、ソースを経由しなくてもいいので、100行程度のSELECT~更新ソースを1本のSQLで賄う事が可能になりますので、覚えておきましょう。
あと、joinはSQL技術者なら使いこなしましょう。サブクエリで数時間かかるSQLが数秒で終わるとかは、結構あるものです。

Category: MySQL, SQL, データベース, プログラミング | No Reviews » |Author:admin | Date:2012-03-02

MySQLとNULL値の罠(=とIS NULL)


MySQLでNULL値を含むカラムとの比較を行ったことありますか?
これ、知らないとハマる人もいるのではなかろうか?
まずは、以下を見て下さい。

(1)SELECT * from table where col1 = NULL;
(2)SELECT * from table where col1 IS NULL;

これ、同じ結果と思われた方は、Master of MySQLとは言い難いです。

記号「=」を使ってのNULL値との比較は、常に偽なのです。
つまり、NULLとの比較は、(2)でないと期待した結果が戻ってきません。(1)は常に0件です。
注意してください。
さてさて、他のDBはどうでしょうか?

Category: MySQL, SQL, データベース | No Reviews » |Author:admin | Date:2012-03-01

【mytop】MySQLのクエリを監視する。【チェック】


mysqlが遅い場合、今、どのようなクエリが走っているか気になりませんか?
その場合に便利なコマンドがあります。
mytopです。
早速、インストールしましょう。
Fedora系は、yumで
% yum install mytop
ubuntu等は、
% apt-get install mytop
でインストールします。

インストールしたら、ホームディレクトリに ファイル[.mytop]を作成しましょう。
簡単に以下で問題ありません。

% emacs ~/.mytop
-----------
user=mysqlusername
pass=mysqluserpassword
host=localhost
-----------

記載が終わったら、以下で起動してみましょう。
% mytop -d databasename

え?画像等を張ってくれと?
さてさて、どんな画面でしょうね?
頑張りましょう!

Category: MySQL, データベース | No Reviews » |Author:admin | Date:2012-02-23

今回の高速化


色々やってたら移行前に速くなってしましました。
今回やったことは、以下の通りです。

・update時のauto commit off
・クエリの書き換え
・MySQLの設定変更
・メモリの増設(2G→4G)

とりあえず、よかったです。
ちょっと余裕が出てきたので、アプリ検索をトップページの見える位置にもってきました。
これは、全文検索が入っているので、負荷が高いです。
でも、アプリが見つかると思いますので、使ってください。どうぞ、よろしくお願い致します。

Category: 未分類 | No Reviews » |Author:admin | Date:2012-02-20

Could not increase number of max_open_files to more than 1024


Could not increase number of max_open_files to more than 1024
は、MySQLの起動時のエラーです。
「最大オープンファイル数が1024じゃ足りないんだよ。」との事。

起動ユーザーからulimitでオープン可能なファイル数の上限を変更せねばならないのだな。おそらくは。

Category: 未分類 | No Reviews » |Author:admin | Date:2012-02-20

Page 1 of 1112345»10...Last »