質問: 123 と記述すると、 (a)のケースではすぐに結果が来ますが、 (b)のケースでは6秒程度かかります。 カラムがintなどの数値型であれば問題ないようです。 これはどういった仕組みによるものでしょうか?? また、 perlのDBIモジュールを使っていますが、 その際は (a)と(b)どちらで条件句はしてされるのでしょうか?
回答: 本来、定数を「'」(単一引用符)で囲んだものは、文字定数です。 しかし、文字定数が、0~9のみで構成されていて、格納対象がintなどの数値のデータ型の場合、 自動的に数値←→文字の変換をしてくれるRDBMSも存在します。MySQLも、その一つです。 利用者側にとっては、数値と文字を区別せず使用できるので、便利と感じる人も いるようです。 しかし、RDBMS側でのデータ型変換は、扱うデータ量が増えれば増える程、オーバーヘッドになります。 また、数値と文字は区別するものということに慣れている人から 見れば、違和感があったり、素人の使い方と感じます。 「数値と文字の変換」のオーバーヘッド以外には、サーバ起動後、最初の実行と2回目以降の実行では、 データがメモリ上にキャッシュ(バッファリング)されていて、性能向上したように見える場合もあります。 だみー