システム構築 ボードリーダー:小野 哲
毎月第2、第4木曜日はボードリーダーからのレポートを掲載いたします。
2003年1月23日
『システム開発MLの最近のTips』
今回は最近のシステム開発MLで話題になっていたTipsを紹介します (河端会長に感謝いたします)。
● 数値データを数値タイプで扱うか、文字列タイプで扱うか、そのパフォーマンスの違い
数値タイプを char, nvarchar といった文字列形式で保存する場合があるが、 int などの数値タイプと比較すると検索速度はintのほうが数倍速い。
●数値データを文字列にする場合、照合順序の指定はどうなるか
数値を文字列タイプで保存する場合の照合順序を「バイナリ並べ替え」にす るか「辞書並べ替え」にするかについては、バイナリ並べ替えのほうが20% 程度高速になるようである。
●テーブルのすべての行数を取得する方法は?
・シンプルな方法
select count(*) from [テーブル名]
・高速な方法(sysindexes.rowsの使用)
select rows
from sysindexes
where id = object_id('テーブル名')
and indid < 2
インデックスを管理するシステムテーブル sysindexes の row フィールドを 利用する方法です。これは、一瞬で終了します。
・すべてのテーブルの列を参照する
select o.name, o.id, i.rows
from sysindexes i, sysobjects o
where
o.xtype = 'U'
and o.id = i.id
and i.indid < 2
※ただし、count(*)とrowsの取得値に誤差がある場合がある。どういったときにずれるのかはただ今MLにて議論中。興味のあるかたはMLを参照ください。
このほかにもいろいろあるようです。興味のある方は、MLを参照ください。
またどんどんその他の方法などありましたら教えてください。
ボードリーダーレポート トップページへ
PASSJメールニュース
著作権ついて
プライバシーポリシー
リンクポリシー
お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.