2006/04/28

古いPostgreSQL でIN 句を利用したサブクエリーが重い現象について。

古いPostgreSQL でインデックスを正しく張っているにもかかわらず重かったらこれを疑ったほうが良いでしょう。

古いPostgreSQL のFAQ より。(無くなってしまったら困るので自分用にメモ。)
=======================================================================
4.22) なぜ、INを使う副問い合わせがとても遅いのですか?

7.4 より前のバージョンでは、副問い合わせは、副問い合わせの結果を外部問い合わせの各ロウについて順次走査することによって、外部の問い合わせに結合させられる
。副問い合わせがわずかなロウしか返さず、外部問い合わせが沢山のロウを返す場合は、INが最も早いです。他の問い合わせを高速化するには、INをEXISTSに置換します:

SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab)

を、置き換えて:

SELECT *
FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)

とします。これが手っ取り早いですが、subcolは索引付きカラムであるべきです。
=======================================================================

こんなふるいシステムは本来は使いたくないのですが・・。

Java アプレットの起動のたびに重くていらいらする問題を改善する方法。

今まで知らなかったのですが、
http://forum.mozilla.gr.jp/?mode=al2&namber=2448&rev=&&KLOG=17
==============================================================
j2re1.4.0以降なら、コントロールパネルのJava Plug-inを開くと
基本タブにコンソールを開始しないという項目があるはずですので
それにチェックしてみたらいかがでしょうか。
コンソールを開始しなくてもJavaは動作しますから…。
==============================================================
という記載を見つけて試してみたら確かに軽くなった感じ。
Sun はなぜこれをデフォルト設定にしないのでしょうか・・。

2006/04/21

sed one liner and if.

http://www.student.northpark.edu/pemente/sed/ifelse.txt
http://www.student.northpark.edu/pemente/sed/sed1line.txt
メモ。

Excel がなぜかやけに重いときに良くあるケース

0 x 0 のサイズにリサイズされたオブジェクトがセルの隙間に大量に入っていることがあります。
「オブジェクトの選択」を使用して適当に探し出して削除して保存してファイルを開きなおせば直ることがあります。

2008/11/20 追記:
Word やExcel でホームページからコピーした際などに書式をクリアにするTips に書いた手法でファイルを新規に作り直してデータを奇麗にする、という手もあります。

2006/04/03

カナロック

ときどきWindows を使っているとIME が何かの弾みで半角カタカナのロックがかかってしまうことがあります。
いつもは気にせずマウスに手を伸ばして、MS-IME の設定を戻して直しているのですが、ちょっと気になって調べたら、Ctl-Shift-CAPS がその切り替えに対応している模様。
自分が使っているHHK-Lite2 というキーボードだとこれらが一番左に全部寄って配置されているのでこれを同時に押してしまっていたのだと納得しました。

2006/04/01

MySQL 日本語で使うときの設定

いつも忘れてしまうのでメモしておく。

http://www.mysql.gr.jp/mysqlml/mysql/msg/9586 より抜粋。
=====================================================================
少なくとも mysql コマンドに限っていえば、個人的には、

o my.cnf の [mysqld] に default-character-set = utf8 と書いておく。
utf8 が一番大きな文字集合なので。
o mysql コマンドはもっぱら euc-jp な環境で使うので、
my.cnf の [mysql] に default-character-set = ujis と書いておく。
o CREATE DATABASE するときは sjis なり ujis なり文字コードを明示的に
指定する。
o ひとつのデータベースに複数の文字コードのテーブルを混在させない。
o ひとつのテーブルに複数の文字コードのカラムを混在させない。

のルールを守ればトラブらないんじゃないかと思います。
=====================================================================

どうも慣れないMySQL なのでとりあえず盲目的に信じておく。

Snippet:
mysql> CREATE DATABASE DBName CHARACTER SET utf8;
mysql> GRANT ALL ON DBName.* TO userName@localhost IDENTIFIED BY 'PASSWORD';