10 câu lệnh T-SQL Index cần thiết với DBA

Những người SQL Server DBA (Database Administrator) – quản trị cơ sở dữ liệu biết rất rõ rằng các danh mục Index trong database rất giống với Index trong mục Library. Hoặc hiểu theo cách đơn giản rằng Index trong Database là 1 hệ cấu trúc có liê

đăng ký vay Những người SQL Server DBA (Database Administrator) – quản trị cơ sở dữ liệu biết danh sách rất rõ rằng hay nhất các danh mục Index trong database tổng hợp rất giống cài đặt với Index trong mục Library an toàn . Hoặc hiểu theo cách đơn giản rằng Index trong Database là 1 hệ cấu trúc có liên kết chặt chẽ dữ liệu với nguyên nhân các bảng lừa đảo để nhanh chóng thu thập thông tin từ mới nhất các dòng trong bảng đó. Trong bài viết xóa tài khoản dưới đây mẹo vặt , chúng tôi xóa tài khoản sẽ giới thiệu kiểm tra với ứng dụng các bạn miễn phí những câu lệnh về T-SQL có liên quan tới Index trong SQL mẹo vặt rất có ích đối giảm giá với bất kỳ người làm công việc DBA nào lừa đảo . Cụ thể nhanh nhất , chúng ta thanh toán sẽ chia ra làm 3 phân mục chính: khái niệm về Index như thế nào , tạo qua web các câu lệnh truy vấn – Query có liên quan đến thông tin địa chỉ , mật khẩu và cuối cùng là tài khoản quá trình bảo dưỡng – Maintenance.

Khái niệm chung về Index:

1 lừa đảo . Clustered Index:

Có nhiệm vụ chính là lưu trữ dữ liệu lấy liền của danh sách các dòng nơi nào được sắp xếp theo thứ tự trong bảng dựa trên giá trị tối ưu của khóa key tối ưu . Chỉ 1 clustered index full crack có thể sử dụng được tạo trên mỗi bảng công cụ , phải làm sao bởi vì dữ liệu nạp tiền của chia sẻ các dòng chỉ khóa chặn có thể sắp xếp theo 1 thứ tự nhất định quản lý . sử dụng Thêm 1 điểm nữa là clustered index tốc độ có thể chi tiết được “sản sinh” trong khi tạo lừa đảo những ràng buộc giống như Primary key trên bảng dữ liệu có sẵn.

Ví dụ như:

ALTER TABLE [MyAddress]
ADD CONSTRAINT [PK_Address_AddressID] PRIMARY KEY CLUSTERED
(
[AddressID] ASC
) ON [PRIMARY]
GO

tải về Bên cạnh đó lừa đảo , clustered index như thế nào cũng danh sách có thể ở đâu nhanh được tạo trên mỗi cột mẹo vặt mà không có liên kết đi kèm kinh nghiệm . Ví dụ:

CREATE CLUSTERED INDEX [MyAddress_id_CIX] ON [MyAddress1]
(
[ID] ASC
)ON [PRIMARY]
GO

2 hỗ trợ . Non Clustered Index:

Được tạo ra chia sẻ để cải thiện hoạt động giả mạo , hiệu suất đăng ký vay của chi tiết những chuỗi câu lệnh truy vấn thường xuyên đăng ký vay được sử dụng tải về , dữ liệu nhưng lại không tối ưu bao gồm tối ưu với clustered index lừa đảo . tự động Bên trong khối nonclustered index giá rẻ , việc sắp xếp thông tin theo thứ tự kinh nghiệm của chỉ số index không khớp giả mạo với thứ tự lưu trữ xét theo khía cạnh vật lý tốc độ của mật khẩu các dòng dữ liệu trên ổ đĩa.

Nonclustered Index tốt nhất có thể tất toán được tạo trên bảng có sẵn khóa chặn , trực tuyến bao gồm trên điện thoại các cột không có trong clustered index hỗ trợ . Ví dụ:

CREATE UNIQUE NONCLUSTERED INDEX
[NIX_col5_col2_col3_col4_col6]
ON [MyAddress]
(
[AddressLine1] ASC,
[AddressLine2] ASC,
[City] ASC,
[StateProvinceID] ASC,
[PostalCode] ASC
)ON [PRIMARY]
GO

Hoặc mới nhất , nonclustered index ở đâu nhanh cũng bản quyền có thể làm tối ưu được trong khi tạo liên kết trong bảng có sẵn sử dụng , ví dụ:

ALTER TABLE [MyAddressType]
ADD CONSTRAINT [DEFF_MyAddressType_ModifiedDate]
DEFAULT (getdate()) FOR [ModifiedDate]
GO

3 download . XML Index:

Là 1 khái niệm khác bản quyền , mẹo vặt được sinh ra trên cột dữ liệu XML chi tiết xóa tài khoản các bảng có clustered index trên khóa Primary khóa chặn . 1 XML index thộc dạng Frimary:

CREATE PRIMARY XML INDEX idx_xCol_MyTable on MyTable (xCol)

ứng dụng với XML index secondary tải về thì mới nhất như sau:

CREATE TABLE MyTable (Col1 INT PRIMARY KEY tất toán , XmlCol XML)
GO
-- Create primary index.
CREATE PRIMARY XML INDEX PIdx_MyTable_XmlCol
ON T(XmlCol)
GO
-- Create secondary indexes (PATH qua app , VALUE nhanh nhất , PROPERTY).
CREATE XML INDEX PIdx_MyTable_XmlCol_PATH ON MyTable(XmlCol)
USING XML INDEX PIdx_MyTable_XmlCol
FOR PATH
GO
CREATE XML INDEX PIdx_MyTable_XmlCol_VALUE ON T(XmlCol)
USING XML INDEX PIdx_MyTable_XmlCol
FOR VALUE
GO

4 qua mạng . Spatial Index:

1 thành phần trong SQL Server 2008 cung cấp cho người dùng link down những cột dữ liệu lừa đảo đặc biệt nạp tiền , có liên quan đến dữ liệu biểu trưng có liên quan đến lĩnh vực không gian quảng cáo , ví dụ như địa lý tự động và hình học.

1 cấu trúc spatial index nguyên nhân có thể kiểm tra được tạo bằng cú pháp sau:

CREATE TABLE MySpatialTable(id int primary key hướng dẫn , geometry_col geometry);
CREATE SPATIAL INDEX SIndx_MySpatialTable_geometry_col1
ON MySpatialTable(geometry_col)
WITH ( BOUNDING_BOX = ( 0 địa chỉ , 0 chi tiết , 500 mới nhất , 200 ) );

Query Index có liên quan đến dữ liệu metadata:

5 phải làm sao . Tìm kiếm như thế nào tất cả index:

Trước tiên qua mạng , giả mạo nếu muốn tìm kiếm ở đâu tốt tất cả index nơi nào thì hãy sử dụng câu lệnh truy vấn – query theo bảng địa chỉ , cột download và khóa index nạp tiền của cơ sở dữ liệu sẵn có.

SELECT OBJECT_SCHEMA_NAME(BaseT.[object_id],DB_ID()) AS [Schema] quảng cáo ,
BaseT.[name] AS [table_name] quảng cáo , I.[name] AS [index_name] cài đặt , AC.[name] AS [column_name] chia sẻ ,
I.[type_desc]
FROM sys.[tables] AS BaseT
INNER JOIN sys.[indexes] I ON BaseT.[object_id] = I.[object_id]
INNER JOIN sys.[index_columns] IC ON I.[object_id] = IC.[object_id]
INNER JOIN sys.[all_columns] AC ON BaseT.[object_id] = AC.[object_id] AND IC.[column_id] = AC.[column_id]
WHERE BaseT.[is_ms_shipped] = 0 AND I.[type_desc] <> "HEAP"
ORDER BY BaseT.[name] trên điện thoại , I.[index_id] giả mạo , IC.[key_ordinal]

6 sử dụng . Fragmentation:

Còn dữ liệu với mẹo vặt quá trình Fragmentation – tìm kiếm khóa chặn những thành phần index trong tình trạng “Fragmentation” bản quyền của tốt nhất tất cả giá rẻ các bảng dữ liệu trong database công cụ hiện tại qua web . Ví dụ cập nhật như sau:

SELECT object_name(IPS.object_id) AS [TableName] ứng dụng ,
SI.name AS [IndexName] an toàn ,
IPS.Index_type_desc ở đâu tốt ,
IPS.avg_fragmentation_in_percent công cụ ,
IPS.avg_fragment_size_in_pages khóa chặn ,
IPS.avg_page_space_used_in_percent mới nhất ,
IPS.record_count miễn phí ,
IPS.ghost_record_count,
IPS.fragment_count nhanh nhất ,
IPS.avg_fragment_size_in_pages
FROM sys.dm_db_index_physical_stats(db_id(DB_NAME()) download , NULL qua app , NULL nhanh nhất , NULL tối ưu , "DETAILED") IPS
JOIN sys.tables ST WITH (nolock) ON IPS.object_id = ST.object_id
JOIN sys.indexes SI WITH (nolock) ON IPS.object_id = SI.object_id AND IPS.index_id = SI.index_id
WHERE ST.is_ms_shipped = 0
order by IPS.avg_fragment_size_in_pages desc

7 hướng dẫn . Missing Index:

Với phải làm sao các thành phần index bị mất xóa tài khoản , SQL Server dịch vụ vẫn có khả năng giám sát qua mạng , theo dõi tình hình hướng dẫn của index phải làm sao được tạo ra lừa đảo nhằm mục đích cải thiện hiệu suất hoạt động quảng cáo của chuỗi câu lệnh truy vấn ở đâu uy tín . Phần mã mật khẩu dưới đây có chức năng liệt kê mới nhất tất cả trên điện thoại các mục index bị mất:

SELECT sys.objects.name
cài đặt , (avg_total_user_cost * avg_user_impact) * (user_seeks + user_scans) AS Impact
địa chỉ , "CREATE NONCLUSTERED INDEX ix_IndexName ON " + sys.objects.name COLLATE DATABASE_DEFAULT + " ( " + IsNull(mid.equality_columns tài khoản , "") + CASE WHEN mid.inequality_columns IS NULL
THEN ""
ELSE CASE WHEN mid.equality_columns IS NULL
THEN ""
ELSE "," END + mid.inequality_columns END + " ) " + CASE WHEN mid.included_columns IS NULL
THEN ""
ELSE "INCLUDE (" + mid.included_columns + ")" END + ";" AS CreateIndexStatement
thanh toán , mid.equality_columns
lừa đảo , mid.inequality_columns
tốt nhất , mid.included_columns
FROM sys.dm_db_missing_index_group_stats AS migs
INNER JOIN sys.dm_db_missing_index_groups AS mig ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details AS mid ON mig.index_handle = mid.index_handle AND mid.database_id = DB_ID()
INNER JOIN sys.objects WITH (nolock) ON mid.OBJECT_ID = sys.objects.OBJECT_ID
WHERE (migs.group_handle IN
(
SELECT TOP (500) group_handle
FROM sys.dm_db_missing_index_group_stats WITH (nolock)
ORDER BY (avg_total_user_cost * avg_user_impact) * (user_seeks + user_scans) DESC))
AND OBJECTPROPERTY(sys.objects.OBJECT_ID mới nhất , "isusertable")=1
ORDER BY 2 DESC cài đặt , 3 DESC

8 tốt nhất . Index không còn sử dụng:

Thành phần cuối cùng chúng ta đề cập đến trong mục này là index không còn sử dụng tính năng , quảng cáo các bạn hãy áp dụng chuỗi câu lệnh địa chỉ dưới đây ở đâu uy tín để liệt kê đăng ký vay tất cả miễn phí các phần index chưa từng qua web được sử dụng tài khoản , bên cạnh đó còn tạo ra lệnh DROP:

SELECT o.name kiểm tra , indexname=i.name download , i.index_id
hỗ trợ , reads=user_seeks + user_scans + user_lookups
mới nhất , writes = user_updates
chia sẻ , rows = (SELECT SUM(p.rows) FROM sys.partitions p WHERE p.index_id = s.index_id AND s.object_id = p.object_id)
giả mạo , CASE
WHEN s.user_updates < 1 THEN 100
ELSE 1.00 * (s.user_seeks + s.user_scans + s.user_lookups) / s.user_updates
END AS reads_per_write
ở đâu tốt , "DROP INDEX " + QUOTENAME(i.name)
+ " ON " + QUOTENAME(c.name) + "." + QUOTENAME(OBJECT_NAME(s.object_id)) as "drop statement"
FROM sys.dm_db_index_usage_stats s
INNER JOIN sys.indexes i ON i.index_id = s.index_id AND s.object_id = i.object_id
INNER JOIN sys.objects o on s.object_id = o.object_id
INNER JOIN sys.schemas c on o.schema_id = c.schema_id
WHERE OBJECTPROPERTY(s.object_id,"IsUserTable") = 1
AND s.database_id = DB_ID()
AND i.type_desc = "nonclustered"
AND i.is_primary_key = 0
AND i.is_unique_constraint = 0
AND (SELECT SUM(p.rows) FROM sys.partitions p WHERE p.index_id = s.index_id AND s.object_id = p.object_id) > 10000
ORDER BY reads

Index Maintainenance:

9 hướng dẫn . Tái cấu trúc Index:

Để xây dựng tự động , tái tạo lại quảng cáo các mục index sau khi thực hiện lừa đảo quá trình defragmentation quảng cáo , giả mạo hoặc khi muốn tạo cấu trúc bảng dữ liệu kích hoạt . Câu lệnh sau tương tự như DBCC DBREINDEX trong tốt nhất các phiên bản công cụ của SQL Server từ 2005:

USE AdventureWorks2008R2;
GO
ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee
REBUILD;
GO

10 cài đặt . REORGANIZE:

Cú pháp REORGANIZE bản quyền được áp dụng đối ở đâu tốt với tính năng các index ở dịch vụ các mức leaf khác nhau cài đặt , cụ thể giảm giá các câu lệnh REORGANIZE này luôn giả mạo được thực hiện online lấy liền , còn về mặt kỹ thuật hay nhất , cú pháp này tương tự kỹ thuật với DBCC INDEXDEFRAG trong nạp tiền các phiên bản SQL Server sau 2005.

USE AdventureWorks2008R2;
GO
ALTER INDEX PK_ProductPhoto_ProductPhotoID ON Production.ProductPhoto
REORGANIZE ;
GO

Chúc tổng hợp các bạn thành công!

4.8/5 (25 votes)

Ý kiến khách hàngPreNext