Microsoft SQL Server
インデックス
サーチ…
クラスタ化インデックスの作成
クラスタ化インデックスの場合、リーフページには実際のテーブル行が含まれます。したがって、クラスタード・インデックスは1つしか存在できません。
CREATE TABLE Employees
(
ID CHAR(900),
FirstName NVARCHAR(3000),
LastName NVARCHAR(3000),
StartYear CHAR(900)
)
GO
CREATE CLUSTERED INDEX IX_Clustered
ON Employees(ID)
GO
非クラスタ化インデックスの作成
非クラスタ化インデックスは、データ行とは別の構造を持ちます。非クラスタ化インデックスには非クラスタ化インデックスキー値が含まれ、各キー値エントリにはキー値を含むデータ行へのポインタがあります。 SQL Server 2008/2012には、最大999の非クラスタ化インデックスが存在します。
参照用リンク: https : //msdn.microsoft.com/en-us/library/ms143432.aspx
CREATE TABLE Employees
(
ID CHAR(900),
FirstName NVARCHAR(3000),
LastName NVARCHAR(3000),
StartYear CHAR(900)
)
GO
CREATE NONCLUSTERED INDEX IX_NonClustered
ON Employees(StartYear)
GO
インデックス情報を表示する
SP_HELPINDEX tableName
ビューのインデックス
CREATE VIEW View_Index02
WITH SCHEMABINDING
AS
SELECT c.CompanyName, o.OrderDate, o.OrderID, od.ProductID
FROM dbo.Customers C
INNER JOIN dbo.orders O ON c.CustomerID=o.CustomerID
INNER JOIN dbo.[Order Details] od ON o.OrderID=od.OrderID
GO
CREATE UNIQUE CLUSTERED INDEX IX1 ON
View_Index02(OrderID, ProductID)
ドロップインデックス
DROP INDEX IX_NonClustered ON Employees
サイズとフラグメンテーションインデックスを返す
sys.dm_db_index_physical_stats (
{ database_id | NULL | 0 | DEFAULT }
, { object_id | NULL | 0 | DEFAULT }
, { index_id | NULL | 0 | -1 | DEFAULT }
, { partition_number | NULL | 0 | DEFAULT }
, { mode | NULL | DEFAULT }
)
Sample :
SELECT * FROM sys.dm_db_index_physical_stats
(DB_ID(N'DBName'), OBJECT_ID(N'IX_NonClustered '), NULL, NULL , 'DETAILED');
インデックスの再構築と再構築
avg_fragmentation_in_percentの値 | 訂正声明 |
---|---|
> 5%および<= 30% | 再編成 |
> 30% | REBUILD |
ALTER INDEX IX_NonClustered ON tableName REORGANIZE;
ALTER INDEX ALL ON Production.Product
REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
STATISTICS_NORECOMPUTE = ON);
表のすべての索引を再構築または再編成する
索引の再構築は、次の文を使用して行われます。
ALTER INDEX All ON tableName REBUILD;
これにより、索引が削除され、再作成され、断片化が除去され、ディスク領域が再利用され、索引ページの順序が変更されます。
インデックスを再編成するには、
ALTER INDEX All ON tableName REORGANIZE;
最小限のシステムリソースを使用し、葉レベルのページを物理的に並べ替えて葉ノードの論理的な左から右の順序に一致させることによって、表とビューのクラスタ化されたインデックスと非クラスタ化されたインデックスの葉レベルを最適化します
すべてのインデックスデータベースを再構築する
EXEC sp_MSForEachTable 'ALTER INDEX ALL ON ? REBUILD'
インデックス調査
"SP_HELPINDEX Table_Name"を使用することもできますが、Kimberly Trippにはストアドプロシージャがあります( ここで見つけることができます )。これはカラムやフィルタ定義などのインデックスについての詳細を示しています。
使用法:
USE Adventureworks
EXEC sp_SQLskills_SQL2012_helpindex 'dbo.Product'
また、Tibor Karasziにはストアドプロシージャ( ここにあります )があります。後では、インデックスの使用に関する情報も表示され、オプションでインデックスの候補のリストを提供します。使用法:
USE Adventureworks
EXEC sp_indexinfo 'dbo.Product'
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow