広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2014年06月30日

Firebird テキスト項目に入る数値でソートする (2)

インデックスの張られた項目でソートした場合と、その項目の CAST 値でソートした場合のパフォーマンスを比較してみた

Firebird-orderby-castなし.png
Firebird-orderby-castあり.png

最初が CAST なしで、次が CAST ありである
一目で、約4倍程度の時間を要しているのがわかる

通常は10万件を表示するなんていうことはないので、あまり気になるほどではないかもしれないが、エクスポート処理などでは、この差は大きい
1時間で終わるバッチが4時間かかるとしたら、担当者が怒り狂うだろう
やはり、CAST テクニックはデータセットが小さい場合だけに限定して使うのがいいのだろう





独自SSLが年間18,000円(税抜)。レンタルサーバー『 ヘテムル









Firebird テキスト項目に入る数値でソートする

プライマリキーを varchar で定義しておいて、ジェネレータで自動連番を設定しているテーブルでソート順が乱れる現象が発生し、「あっ」と言ってしまう事案があった
本当はジェネレータで桁数が埋まるくらいの初期値をセットしておけば問題なかったのだが、うっかり忘れていたか、桁数を間違えていた可能性がある

テーブル定義
CREATE TABLE TAB_A
(
ID VARCHAR(10) NOT NULL PRIMARY KEY
)

本来なら、この定義の後で以下のSQLを発行しておくべきであった
SET GENERATOR GEN_AUTO_ID TO 1000000000



取りあえず、解決策はSQLの修正だが、CAST が使えることがわかった

SELECT * FROM TAB_A ORDER BY CAST(ID AS NUMERIC(10))


パフォーマンスの低下がどの程度なのかまでは評価していないが、後で調べてみようと思う


月額900円(税抜)〜で大容量100GB〜・マルチドメイン無制限の共用サーバー


お名前.com レンタルサーバー

【キャンペーン情報】

 今なら、初期費用&月額最大3ヶ月分無料!

【利用料金】

 初期費用1,890円(税込)/月額料金945 円(税込)〜

【主な機能】
 ・サーバー容量:100 GB〜
 ・マルチドメイン設定:無制限
 ・データベース(MySQL):30個〜
 ・サブドメイン設定:無制限
 ・メールアカウント数:無制限
 ・メーリングリスト:最大50個5つまで作成可能
 ・高機能迷惑メールフィルター(オプション)
 ・高機能アクセス解析
 ・CGI / Perl / PHP5 / Ruby / Python / 対応

【アプリケーション】
 ・WordPress / Movable Type かんたんインストール
 ・PukiWiki/XOOPS Cube/phpBB/Joomla!/OpenPNE

【セキュリティ】
 共用SSL/独自SSL(オプション)

【サポート】
 24時間365日の安心電話サポート(無料)


詳細はこちら

Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: