Works > 逆引きSQL比較 > MSSQL > データベースの情報
MSSQL
[ SQL ]
[ データベースの情報 ]
[ 手続き型言語 ]
[ その他 ]
■データベースの情報(DBA・チューニング関連)
テーブルの一覧を表示するには? ▲TOP
ORACLE MSSQL SSA Postgres MySQL Jet
--システムストアドプロシージャ(システムビューも表示)
sp_tables
--またはシステムテーブルを使って
select o.name "テーブル名", u.name "所有者" from sysobjects o join sysusers u on o.uid = u.uid
where o.type = 'U' order by 1
テーブルの列の一覧を表示するには? ▲TOP
ORACLE MSSQL SSA Postgres MySQL
--システムストアドプロシージャ
sp_columns テーブル名
--またはシステムテーブルを使って
select o.name,c.name from syscolumns c, sysobjects o
where c.id=o.id
order by o.name,c.colid
テーブルのINDEX列の一覧を表示するには? ▲TOP
ORACLE MSSQL SSA
select o.name,col.name from sysindexkeys ik, sysobjects o, syscolumns col
where ik.id=o.id
and ik.id=col.id
and ik.colid=col.colid
order by ik.id,ik.indid,ik.keyno
-- ※ sysindexes sysconstraints も参考にしてください
-- ※ 2002/11/10 テーブル名を指定して、こんな感じで
-- ↓
select o.name,col.name
from sysindexkeys ik, sysobjects o, syscolumns col,
(select i.id,i.indid,i.status from sysindexes i where (i.status & 2048)<>0) v_pr
where ik.id=o.id
and ik.id=col.id
and ik.colid=col.colid
and ik.id=v_pr.id
and ik.indid=v_pr.indid
and o.name='TBL' --テーブル名
order by ik.id,ik.indid,ik.keyno
ストアドのソースを表示するには? ▲TOP
ORACLE MSSQL SSA
sp_helptext プログラム名
--または
select o.name,c.text from syscomments c , sysobjects o
where c.id = o.id
and o.name = 'プログラム名'
order by c.id,c.colid
ビューのSELECT文を表示するには? ▲TOP
ORACLE MSSQL SSA
sp_helptext ビュー名
--または
select o.name,c.text from syscomments c , sysobjects o
where c.id = o.id
and o.name = 'ビュー名'
order by c.id,c.colid
任意の日付以降に作成したオブジェクトの一覧を表示するには? ▲TOP
ORACLE MSSQL
select o.name "NAME", substring(v.name + x.name,1,16) "TYPE", o.crdate "CREATED",substring(user_name(uid),1,8) "OWNER"
from sysobjects o, master.dbo.spt_values v, master.dbo.spt_values x
where o.sysstat & 0xf = v.number
and v.type = 'O'
and x.type = 'R'
and o.userstat & -32768 = x.number
and o.crdate >= '01-04-10' --任意の日付
order by 4,2,3,1
セッション一覧(プロセス一覧) ▲TOP
ORACLE MSSQL
sp_who
--または
sp_who2
--または
select
spid,kpid,lastwaittype,status,hostname,program_name
from master..sysprocesses
ロックしているセッションと対象オブジェクトを確認するには? ▲TOP
ORACLE MSSQL
どのセッションがロックしているか、その種類と対象オブジェクトを確認します。
sp_lock
--または(↓これならオブジェクト名がわかります)
select convert (smallint, req_spid) As spid,
rsc_dbid As dbid,
rsc_objid As ObjId,
o.name As ObjName,
rsc_indid As IndId,
substring (v.name, 1, 4) As Type,
substring (rsc_text, 1, 16) as Resource,
substring (u.name, 1, 8) As Mode,
substring (x.name, 1, 5) As Status
from master.dbo.syslockinfo,
master.dbo.sysobjects o,
master.dbo.spt_values v,
master.dbo.spt_values x,
master.dbo.spt_values u
where master.dbo.syslockinfo.rsc_type = v.number
and master.dbo.syslockinfo.rsc_objid *= o.id
and v.type = 'LR'
and master.dbo.syslockinfo.req_status = x.number
and x.type = 'LS'
and master.dbo.syslockinfo.req_mode + 1 = u.number
and u.type = 'L'
order by spid
SQLの実行計画(プラン)を知るには? ▲TOP
ORACLE MSSQL SSA Postgres MySQL Jet
クエリアナライザ(GUIのクライアント)からは実行時にグラフィカルに表示されます。
--isql , osql の場合は以下のようにすれば、プランが表示されます。
set showplan_all on
go
select * from kemp
go
INDEXを使わせるには?(オプティマイザヒントを使用した実行計画の強制) ▲TOP
ORACLE MSSQL
オプティマイザヒントは、オプティマイザに対して、最適な実行計画を強制的に使わせるための機能です。
-- WITH(INDEX(INDEX名)) を指定します。
--※オラクルと異なり、コメントではないので、オブジェクトPK_KEMPが存在しないとエラーになります
select * from kemp e WITH(INDEX(PK_KEMP))
where e.empno = 1
go
※もう少し細かい話を
オプティマイザヒントを使用したパフォーマンスチューニングに書きましたのでご参考に
このページの先頭へ
MSSQL
[ SQL ]
[ データベースの情報 ]
[ 手続き型言語 ]
[ その他 ]
Works > 逆引きSQL比較 > MSSQL > データベースの情報