This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
前回の「条件分岐のあるストアドプロシージャ」に引き続き、ストアドプロシージャの作成に挑戦します。今回は、前回のIF文による条件分岐から、WHILE文により繰り返し実行するSQL文を使用したストアドプロシージャを取り上げます。 では早速、例題を実行しながら、SQLの確認をしていきましょう。 誕生日の月ごとに従業員名を表示するストアドプロシージャ 今回は、従業員テーブル(Employees)に保存されている誕生日(BirthDate)を基に、誕生日月ごとの従業員リストを作成するストアドプロシージャを作成します。クエリアナライザから下記のSQLを実行し、SelectBirthdayByMonthというストアドプロシージャを作成してみましょう。
SQLServerでテーブル型を戻り値とする関数を作る SQLServerではINT型やVARCHAR型などを返す関数と同様にユーザー定義テーブル型を戻り値とする関数を作成できます。 テーブル型を戻り値とする関数は通常の関数と同様にCREATE FUNCTIONで作成します。 CREATE FUNCTION [dbo].[test_function] ( @param1 VARCHAR(MAX) ='' ,@param2 VARCHAR(MAX) ='' ) RETURNS @retTbl TABLE ( no INT ,name VARCHAR(20) ) BEGIN INSERT INTO @retTbl VALUES( 1, '太郎' ) ; INSERT INTO @retTbl VALUES( 2, '次郎' ) ; INSERT INTO @retTbl VALUES( 3,
SQLのパフォーマンスチューニング。 インデックスを貼ったり、 Group by、distinct、 副問い合わせ、in句、union、exists句、などなど、join、outer join を使ってテーブルの結合順序を制御したり、やるだけやって見ても、どうしても速くならなかった場合には、SQLの最後に OPTION (FORCE ORDER) を追加すると、うまく高速化が図れる場合があります。ただし、ある程度RDBMSに精通していて、効率の良いテーブル結合順序に配慮したSQL文であることが前提となるので、上級者向けだと思います。 FORCE ORDER は SQL SERVER で使うことができるクエリヒントで、テーブル結合順序をオプティマイザに委ねるのではなく、from 句に記述したとおりに強制的に結合させることができます。通常はオプティマイザの方が賢いということで頻繁に使用すること
RDBMSのボトルネックは99%ディスクI/Oにある。CPUや物理メモリに比べて、ハードディスクの速度はかなり遅い。気が遠くなるぐらい遅い。インデックスを効果的に設計すれば劇的にディスクI/Oコストを減らすことができる。 インデックスって何だ?まず簡単に基礎知識。インデックスには、クラスタ化インデックスと非クラスタ化インデックスがある。 大雑把に言えば、クラスタ化インデックスとはレコードデータ自体のディスク上での順序を表す。だから、テーブル毎に一つしか作れない。クラスタ化インデックスの順序が隣接しているという事は、データが物理的に隣接されてディスクに格納されているという事である。 SQL Serverは、データを「ページ」という概念で格納する。I/Oは全てこの8KBのページが最小単位である。レコードをたった一行取得する場合でもページ毎に読み出される。クラスタ化インデックスの順序が近いデータ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く