Home > 2009年12月
2009年12月 Archive
SQL Server 2008 R2 プレビューセミナーにいってきた
- 2009-12-23 Wed 18:50:38
- SQL Server
いってきた。
データベースのコア部分については、2005から2008、そんで今回の2008R2へと基本アーキテクチャは変えてませんということで、特に説明はなく、周辺ツールの説明に終止していました。
特にデモに力が入っていたのがPowerPivotという機能について。
特別なツールを使わなくても、エクセルでデータ分析ができちゃうよっていうのが売りのようなのですが、デモの大半がエクセルの画面だったのはちょっと残念でした。
といっても、今回のセミナーの趣旨というか、集まる人たちの層を考えるとしょうがないのかも、という気もします。
セミナー終了後、質問にも対応していただけたので、個人的には大満足なセミナーでした。
データベースのコア部分については、2005から2008、そんで今回の2008R2へと基本アーキテクチャは変えてませんということで、特に説明はなく、周辺ツールの説明に終止していました。
特にデモに力が入っていたのがPowerPivotという機能について。
特別なツールを使わなくても、エクセルでデータ分析ができちゃうよっていうのが売りのようなのですが、デモの大半がエクセルの画面だったのはちょっと残念でした。
といっても、今回のセミナーの趣旨というか、集まる人たちの層を考えるとしょうがないのかも、という気もします。
セミナー終了後、質問にも対応していただけたので、個人的には大満足なセミナーでした。
SQL Serverのインデックスについて興味深いページ
- 2009-12-15 Tue 22:47:11
- SQL Server
SQL Server 2005におけるインデックス有効性の評価、および、管理
http://blogs.msdn.com/sqljapan/archive/2007/05/16/sql-server-2005.aspx
クラスタ化インデックスと非クラスタ化インデックスのパフォーマンス比較
http://technet.microsoft.com/ja-jp/library/cc917672.aspx
OracleでDBを覚えた人間からすると、クラスタ化インデックスの方が更新も早いっていうのがちょっと理解不能。
後で精読すること。
http://blogs.msdn.com/sqljapan/archive/2007/05/16/sql-server-2005.aspx
クラスタ化インデックスと非クラスタ化インデックスのパフォーマンス比較
http://technet.microsoft.com/ja-jp/library/cc917672.aspx
OracleでDBを覚えた人間からすると、クラスタ化インデックスの方が更新も早いっていうのがちょっと理解不能。
後で精読すること。
SQL Serverのインデックスについて動きを確認してみた
- 2009-12-14 Mon 23:08:56
- SQL Server
SQL Serverのインデックスの動きがよくわからなかったので確認してみた。
■CREATE TABLE時にPK指定
1> CREATE TABLE t1
2> (col_a int not null
3> ,col_b int not null
4> ,constraint t1_cola_pk primary key(col_a));
5> go
1> SELECT object_id, name, index_id, type_desc, is_unique, is_primary_key
2> FROM sys.indexes WHERE object_id=2073058421;
3> go
object_id name index_id type_desc is_unique is_primary_key
----------- -------------- ----------- --------------- --------- --------------
2073058421 t1_cola_pk 1 CLUSTERED 1 1
クラスタ化インデックスが自動で作成されてしまう。
■PK指定時に作成されるインデックスを非クラスタにする
2> CREATE TABLE t2
3> (col_a int not null
4> ,col_b int not null
5> ,constraint t2_cola_pk primary key nonclustered (col_a));
6> go
1>
2> SELECT object_id, name FROM sys.tables WHERE name='t2';
3> go
object_id name
----------- ---------------------------------------------------
2105058535 t2
1> SELECT object_id, name, index_id, type_desc, is_unique, is_primary_key
2> FROM sys.indexes WHERE object_id=2105058535;
3> go
object_id name index_id type_desc is_unique is_primary_key
----------- ----------------- ----------- -------------- --------- --------------
2105058535 NULL 0 HEAP 0 0
2105058535 t2_cola_pk 2 NONCLUSTERED 1 1
index_idが0なのはデータ領域(ヒープ?)のことらしい。sys.indexesになんでヒープの情報がでるんだろう。
pkのために作成されたインデックスはnonclusteredになったけど、これをnonuniqueにするオプションはどうも見つけられなかった。多分ユニーク強制。
■あらかじめpk列にインデックスを作成してからpkを指定
1> CREATE TABLE t3
2> (col_a int not null
3> ,col_b int not null);
4> go
1>
2> CREATE INDEX t3_cola_idx ON t3(col_a);
3> go
1> SELECT object_id, name FROM sys.tables WHERE name='t3';
2> go
object_id name
----------- -------------------------------------------------
2137058649 t3
1> SELECT object_id, name, index_id, type_desc, is_unique, is_primary_key
2> FROM sys.indexes WHERE object_id=2137058649;
3> go
object_id name index_id type_desc is_unique is_primary_key
----------- ---------- ----------- ------------- --------- --------------
2137058649 NULL 0 HEAP 0 0
2137058649 t3_cola_idx 2 NONCLUSTERED 0 0
1> ALTER TABLE t3 ADD CONSTRAINT t3_cola_pk primary key(col_a);
2> go
1> SELECT object_id, name, index_id, type_desc, is_unique, is_primary_key
2> FROM sys.indexes WHERE object_id=2137058649;
3> go
object_id name index_id type_desc is_unique is_primary_key
----------- ----------- --------- ------------- --------- --------------
2137058649 t3_cola_pk 1 CLUSTERED 1 1
2137058649 t3_cola_idx 2 NONCLUSTERED 0 0
クラスタ化インデックスができたのでヒープの情報は消えるが、pk列に索引が2つ付いた状態になってしまう。
事前じコンポジット、もしくはincludeでインデックスを作成しておいて、後からpkを指定することで余計な索引を作成しないようにしたいんだけど、どうもできないっぽい。
pk指定時に索引を作成しないオプションか、既存の索引に後から列をincludeするオプションがもしあるなら教えてください。誰か偉い人。
■CREATE TABLE時にPK指定
1> CREATE TABLE t1
2> (col_a int not null
3> ,col_b int not null
4> ,constraint t1_cola_pk primary key(col_a));
5> go
1> SELECT object_id, name, index_id, type_desc, is_unique, is_primary_key
2> FROM sys.indexes WHERE object_id=2073058421;
3> go
object_id name index_id type_desc is_unique is_primary_key
----------- -------------- ----------- --------------- --------- --------------
2073058421 t1_cola_pk 1 CLUSTERED 1 1
クラスタ化インデックスが自動で作成されてしまう。
■PK指定時に作成されるインデックスを非クラスタにする
2> CREATE TABLE t2
3> (col_a int not null
4> ,col_b int not null
5> ,constraint t2_cola_pk primary key nonclustered (col_a));
6> go
1>
2> SELECT object_id, name FROM sys.tables WHERE name='t2';
3> go
object_id name
----------- ---------------------------------------------------
2105058535 t2
1> SELECT object_id, name, index_id, type_desc, is_unique, is_primary_key
2> FROM sys.indexes WHERE object_id=2105058535;
3> go
object_id name index_id type_desc is_unique is_primary_key
----------- ----------------- ----------- -------------- --------- --------------
2105058535 NULL 0 HEAP 0 0
2105058535 t2_cola_pk 2 NONCLUSTERED 1 1
index_idが0なのはデータ領域(ヒープ?)のことらしい。sys.indexesになんでヒープの情報がでるんだろう。
pkのために作成されたインデックスはnonclusteredになったけど、これをnonuniqueにするオプションはどうも見つけられなかった。多分ユニーク強制。
■あらかじめpk列にインデックスを作成してからpkを指定
1> CREATE TABLE t3
2> (col_a int not null
3> ,col_b int not null);
4> go
1>
2> CREATE INDEX t3_cola_idx ON t3(col_a);
3> go
1> SELECT object_id, name FROM sys.tables WHERE name='t3';
2> go
object_id name
----------- -------------------------------------------------
2137058649 t3
1> SELECT object_id, name, index_id, type_desc, is_unique, is_primary_key
2> FROM sys.indexes WHERE object_id=2137058649;
3> go
object_id name index_id type_desc is_unique is_primary_key
----------- ---------- ----------- ------------- --------- --------------
2137058649 NULL 0 HEAP 0 0
2137058649 t3_cola_idx 2 NONCLUSTERED 0 0
1> ALTER TABLE t3 ADD CONSTRAINT t3_cola_pk primary key(col_a);
2> go
1> SELECT object_id, name, index_id, type_desc, is_unique, is_primary_key
2> FROM sys.indexes WHERE object_id=2137058649;
3> go
object_id name index_id type_desc is_unique is_primary_key
----------- ----------- --------- ------------- --------- --------------
2137058649 t3_cola_pk 1 CLUSTERED 1 1
2137058649 t3_cola_idx 2 NONCLUSTERED 0 0
クラスタ化インデックスができたのでヒープの情報は消えるが、pk列に索引が2つ付いた状態になってしまう。
事前じコンポジット、もしくはincludeでインデックスを作成しておいて、後からpkを指定することで余計な索引を作成しないようにしたいんだけど、どうもできないっぽい。
pk指定時に索引を作成しないオプションか、既存の索引に後から列をincludeするオプションがもしあるなら教えてください。誰か偉い人。
Home > 2009年12月
- タグクラウド
-
- Categories
- Monthly
- Recent Entries
- Recent Comments
- Recent Trackbacks
- Appendix
- Author:Nakunaru
データベース(ORACLEとかSQL ServerとかDB2とかMySQLとか)とか技術者教育とかプログラムとか。
気になる技術を少しずつ勉強していきます。