トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション



システム構築 ボードリーダー:小野 哲

毎月第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.