SlideShare a Scribd company logo
1 of 26
1. Định nghĩa

- Statistics (thống kê): được lập trên một cột của một bảng
- Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao
gồm đếm chúng)
- Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất
Header

Density Vector

Histogram
1. Định nghĩa

- Statistics (thống kê): được lập trên một cột của một bảng
- Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao
gồm đếm chúng)
- Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất

Tên Statistics

TGian Update

Số dòng trong bảng

Số dòng được thống kê

Số giá trị
1. Định nghĩa

- Statistics (thống kê): được lập trên một cột của một bảng
- Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao
gồm đếm chúng)
- Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất
Tần số lặp lại của mỗi giá
trị

Cột lập thống kê
1. Định nghĩa

- Statistics (thống kê): được lập trên một cột của một bảng
- Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao
gồm đếm chúng)
- Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất

Giá trị khóa

Số dòng nằm trong khoảng giá trị

Số dòng cùng giá trị

Số giá
trị
1. Tạo Statistic (Statistics được tạo ra khi nào ???)
* Một Statistic được tạo đồng thời khi Index được khởi
tạo
Demo
* Câu truy vấn tự phát sinh
Statistic Auto Create Statistics của Database là true
- Tùy chọn

Demo

- Khi Statistic không đủ thông tin đáp ứng quá trình truy vấn
* Tạo thủ công bằng Transct-SQL

Demo

CREATE STATISTICS STATS_SINHVIEN_MALOPQL
ON SINHVIEN(MaLopQL)
CREATE STATISTICS [Tên Statistic]
ON [Tên bảng](Tên cột)
1. Tạo, xóa, cập nhật Statistics
* Tạo Statistics
CREATE STATISTICS STA_SV_TENSV
ON SINHVIEN(TenSV)

* Xem thông tin Statistics
DBCC SHOW_STATISTICS
(SINHVIEN,STA_SV_TENSV)

* Xóa Statistics
DROP STATISTICS SINHVIEN.STA_SV_TENSV

* Liệt kê các Statistics
EXEC sp_helpstats SINHVIEN, 'ALL'

* Cập nhật Statistics
UPDATE STATISTICS SINHVIEN
- Khi nào Statistics được cập nhật (làm rõ ở phần sau)
- Index là một cấu trúc dữ liệu được lưu trữ trên ổ cứng tương đương với table
- Index chứa các key được xây dựng từ một hay nhiều cột trong bảng được lưu thành câu
trúc dạng B-Tree cho phép việc tìm kiếm một hay tập hợp các khóa nhanh chóng

1. Clustered Index
* Clustered Index
Demo

CLUSTERED INDEX PK_SINHVIEN
ON SINHVIEN(MaSV)

* Non-Clustered Index

CREATE CLUSTERED INDEX [IndexName]
ON [TableName]([ColumnName])

- Clustered Index sắp xếp và lưu trữ dữ liệu ở tầng vật lý (ngay trên bảng)
- Clustered Index được tạo mặc định cho cột khóa chính trong bảng
1. Non-Clustered Index
* Non-Clustered Index
Demo

CREATE NONCLUSTERED INDEX [IndexName]
ON [TableName](ColumnName)
SV00004

con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00006

con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00008

con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00007

con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00009

con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00002

con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00010

con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00001

con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00005

con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00003

con trỏ tới dòng dữ liệu tương ứng trong bảng

- Non-Clustered Index được lưu tách biệt với dữ liệu thật trong bảng
- Mỗi chỉ mục có con trỏ, trỏ đến dữ liệu thật trong bảng
DatabaseName: Credit
Table: member(member_no,lastname,firstname,middleinitial,city,phone_no)

* Truy vấn

? Statistics được sử dùng như thế nào ?

+ Lần 1:
SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WHERE m.FirstName LIKE 'Kim%'

+ Lần 2:
SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WHERE m.FirstName LIKE 'Ki%'

+ Lần 3:
SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WHERE m.FirstName LIKE 'K%'
Demo

DatabaseName: Credit
Table: member(member_no,lastname,firstname,middleinitial,city,phone_no)

* Tạo Index
CREATE INDEX Member_LName
ON member(Lastname, FirstName, MiddleInitial)

* Truy vấn
SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WHERE m.FirstName LIKE 'Kim%'
Không có Statistics
Có Statistic trên FirstName
+ Thực thi truy vấn
+ Câu truy vấn phát sinh Statistics
Clustered Index Scan trên Index member_ident

StatisticsName: _WA_Sys_00000003_0CBAE877

Logical reads: 144

+ Thực thi truy vấn

*member_ident: Clustered Index mặc định của Primary Key

Nonclustered Index Scan trên Index Member_LName
Theo thống kê có 1.96078 dòng trả về
(Estimated Number of Rows)
Logical reads: 46
Demo

DatabaseName: Credit
Table: member(member_no,lastname,firstname,middleinitial,city,phone_no)

* Truy vấn

SELECT m.LastName, m.FirstName,
m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WHERE m.FirstName LIKE 'Ki%'

+ Thực thi truy vấn

SELECT m.LastName, m.FirstName,
m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WITH(INDEX(member_ident))
WHERE m.FirstName LIKE 'Ki%'
+ Thực thi truy vấn

Nonclustered Index Scan trên Index Member_LName

Clustered Index Scan trên Index member_ident

Estimated Number of Rows : 19.6078 dòng

Estimated Number of Rows : 19.6078 dòng

Logical reads: 82

Logical reads: 144

Chi phí thực hiện truy vấn

Thấp

Cao
Demo

DatabaseName: Credit
Table: member(member_no,lastname,firstname,middleinitial,city,phone_no)

* Truy vấn

SELECT m.LastName, m.FirstName,
m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WHERE m.FirstName LIKE 'K%'

+ Thực thi truy vấn

SELECT m.LastName, m.FirstName,
m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WITH(INDEX(Member_LName))
WHERE m.FirstName LIKE 'K%'
+ Thực thi truy vấn

Clustered Index Scan trên Index member_ident

Nonclustered Index Scan trên Index Member_LName

Estimated Number of Rows : 431,373 dòng

Estimated Number of Rows : 431,373 dòng

Logical reads: 144

Logical reads: 935

Chi phí thực hiện truy vấn

Thấp

Cao
Demo

DatabaseName: Credit
Table: member(member_no,lastname,firstname,middleinitial,city,phone_no)

* Update dữ liệu ? Khi nào Statistics được cập nhật ?
UPDATE member
SET firstname = 'Kimberly'
WHERE member_no >= 1 AND member_no <= 1000

Update 1.000 dòng
= 10% tổng số dòng
Tổng số dòng: 10.000

* Truy vấn

SELECT m.LastName, m.FirstName,
m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WITH (INDEX (member_ident))
WHERE m.FirstName LIKE 'Kim%'
+ Thực thi truy vấn
Clustered Index Scan trên Index member_ident
Logical reads: 144

SELECT m.LastName, m.FirstName,
m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WHERE m.FirstName LIKE 'Kim%'

+ Thực thi truy vấn
Nonclustered Index Scan trên Index Member_LName
Logical reads: 2072
Estimated Number of Rows : 1.96078 dòng
Actual Number of Rows: 1001
Demo

DatabaseName: Credit
Table: member(member_no,lastname,firstname,middleinitial,city,phone_no)
* Update dữ liệu
UPDATE member
SET firstname = 'Kimberly'
WHERE member_no > 1000 AND member_no <= 2500

Số dòng Updaet
1.500 dòng
= 15% tổng số dòng

Số dòng Update:
1000 + 1500 = 2500 dòng
> 20% tổng số dòng

* Truy vấn

SELECT m.LastName, m.FirstName,
m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WITH (INDEX (member_ident))
WHERE m.FirstName LIKE 'Kim%'
+ Thực thi truy vấn
Clustered Index Scan trên Index member_ident
Logical reads: 144

SELECT m.LastName, m.FirstName,
m.MiddleInitial, m.Phone_no, m.City
FROM dbo.Member AS m
WHERE m.FirstName LIKE 'Kim%'
+ Thực thi truy vấn
Clustered Index Scan trên Index member_ident
Logical reads: 144
Estimated Number of Rows : 2509,8 dòng
Actual Number of Rows: 2501
- Statistics giúp SQL lựa chọn phương án thực hiện
truy vấn tối ưu
- Tùy chọn Auto Create Statistics cho db là true
- Không nhất thiết tạo Index cho thuộc tính không
thường xuyên truy vấn
- Cần có kế hoạch truy vấn rõ ràng để quản lý Statistics
- Update Statistics bằng Transact-SQL để đảm bảo truy
vấn luôn tối ưu
•
•
•
•
•
•

technet.microsoft.com
msdn.microsoft.com
sqlskills.com
stackoverflow.com
sqlviet.com
bigdata.com.vn

Video Demo: http://social.technet.microsoft.com/Search/enUS/sqlserver?query=statistics&ac=4#refinementChanges=300&pageNu
mber=1&showMore=true
Sample Database and Script: http://www.sqlskills.com/sql-serverresources/sql-server-demos/
CREATE CLUSTERED INDEX
CREATE NONCLUSTERED INDEX
STATISTICS TẠO ĐỒNG THỜI VỚI INDEX
CÂU TRUY VẤN PHÁT SINH STATISTICS
TẠO STATISTICS BẰNG TRANSCT-SQL
Management Statistics
Management Statistics

More Related Content

Similar to Management Statistics

Co so du lieu t sql
Co so du lieu t sqlCo so du lieu t sql
Co so du lieu t sqlANHMATTROI
 
b34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfb34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfQuyVo27
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3pisu412
 
Bài tập CTDL và GT 12
Bài tập CTDL và GT 12Bài tập CTDL và GT 12
Bài tập CTDL và GT 12Hồ Lợi
 
Bài tập CTDL và GT 1
Bài tập CTDL và GT 1Bài tập CTDL và GT 1
Bài tập CTDL và GT 1Hồ Lợi
 
Chương 3_ Các công cụ mô tả hệ thống Final.pdf
Chương 3_ Các công cụ mô tả hệ thống Final.pdfChương 3_ Các công cụ mô tả hệ thống Final.pdf
Chương 3_ Các công cụ mô tả hệ thống Final.pdfoThuHng5
 
02. baigiangquery
02. baigiangquery02. baigiangquery
02. baigiangqueryHoang Minh
 
Bài 6 Làm việc với truy vấn cơ bản - Giáo trình FPT
Bài 6 Làm việc với truy vấn cơ bản - Giáo trình FPTBài 6 Làm việc với truy vấn cơ bản - Giáo trình FPT
Bài 6 Làm việc với truy vấn cơ bản - Giáo trình FPTMasterCode.vn
 
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...MasterCode.vn
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Vo Oanh
 
bai_giang_access_phan_query.ppt
bai_giang_access_phan_query.pptbai_giang_access_phan_query.ppt
bai_giang_access_phan_query.pptTonc15
 
(1) Giới thiệu về thống kê cho các ngành khoa học xã hội_Bài giảng 1: Giới th...
(1) Giới thiệu về thống kê cho các ngành khoa học xã hội_Bài giảng 1: Giới th...(1) Giới thiệu về thống kê cho các ngành khoa học xã hội_Bài giảng 1: Giới th...
(1) Giới thiệu về thống kê cho các ngành khoa học xã hội_Bài giảng 1: Giới th...Development and Policies Research Center (DEPOCEN)
 

Similar to Management Statistics (18)

Co so du lieu t sql
Co so du lieu t sqlCo so du lieu t sql
Co so du lieu t sql
 
Thuc hanh access
Thuc hanh accessThuc hanh access
Thuc hanh access
 
Baigiangphanquery
BaigiangphanqueryBaigiangphanquery
Baigiangphanquery
 
04 query
04 query04 query
04 query
 
b34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfb34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdf
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3
 
Bài tập CTDL và GT 12
Bài tập CTDL và GT 12Bài tập CTDL và GT 12
Bài tập CTDL và GT 12
 
Bài tập CTDL và GT 1
Bài tập CTDL và GT 1Bài tập CTDL và GT 1
Bài tập CTDL và GT 1
 
Chương 3_ Các công cụ mô tả hệ thống Final.pdf
Chương 3_ Các công cụ mô tả hệ thống Final.pdfChương 3_ Các công cụ mô tả hệ thống Final.pdf
Chương 3_ Các công cụ mô tả hệ thống Final.pdf
 
02. baigiangquery
02. baigiangquery02. baigiangquery
02. baigiangquery
 
Bài 6 Làm việc với truy vấn cơ bản - Giáo trình FPT
Bài 6 Làm việc với truy vấn cơ bản - Giáo trình FPTBài 6 Làm việc với truy vấn cơ bản - Giáo trình FPT
Bài 6 Làm việc với truy vấn cơ bản - Giáo trình FPT
 
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
Pdf bai 6 làm việc với truy vấn cơ bản-slide 06-quan tri csdl voi access-mast...
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2
 
02. baigiangquery
02. baigiangquery02. baigiangquery
02. baigiangquery
 
bai_giang_access_phan_query.ppt
bai_giang_access_phan_query.pptbai_giang_access_phan_query.ppt
bai_giang_access_phan_query.ppt
 
Chuong4
Chuong4Chuong4
Chuong4
 
Lý thuyết excel csdl
Lý thuyết excel   csdlLý thuyết excel   csdl
Lý thuyết excel csdl
 
(1) Giới thiệu về thống kê cho các ngành khoa học xã hội_Bài giảng 1: Giới th...
(1) Giới thiệu về thống kê cho các ngành khoa học xã hội_Bài giảng 1: Giới th...(1) Giới thiệu về thống kê cho các ngành khoa học xã hội_Bài giảng 1: Giới th...
(1) Giới thiệu về thống kê cho các ngành khoa học xã hội_Bài giảng 1: Giới th...
 

Management Statistics

  • 1.
  • 2.
  • 3. 1. Định nghĩa - Statistics (thống kê): được lập trên một cột của một bảng - Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao gồm đếm chúng) - Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất Header Density Vector Histogram
  • 4. 1. Định nghĩa - Statistics (thống kê): được lập trên một cột của một bảng - Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao gồm đếm chúng) - Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất Tên Statistics TGian Update Số dòng trong bảng Số dòng được thống kê Số giá trị
  • 5. 1. Định nghĩa - Statistics (thống kê): được lập trên một cột của một bảng - Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao gồm đếm chúng) - Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất Tần số lặp lại của mỗi giá trị Cột lập thống kê
  • 6. 1. Định nghĩa - Statistics (thống kê): được lập trên một cột của một bảng - Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao gồm đếm chúng) - Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất Giá trị khóa Số dòng nằm trong khoảng giá trị Số dòng cùng giá trị Số giá trị
  • 7. 1. Tạo Statistic (Statistics được tạo ra khi nào ???) * Một Statistic được tạo đồng thời khi Index được khởi tạo Demo * Câu truy vấn tự phát sinh Statistic Auto Create Statistics của Database là true - Tùy chọn Demo - Khi Statistic không đủ thông tin đáp ứng quá trình truy vấn * Tạo thủ công bằng Transct-SQL Demo CREATE STATISTICS STATS_SINHVIEN_MALOPQL ON SINHVIEN(MaLopQL) CREATE STATISTICS [Tên Statistic] ON [Tên bảng](Tên cột)
  • 8. 1. Tạo, xóa, cập nhật Statistics * Tạo Statistics CREATE STATISTICS STA_SV_TENSV ON SINHVIEN(TenSV) * Xem thông tin Statistics DBCC SHOW_STATISTICS (SINHVIEN,STA_SV_TENSV) * Xóa Statistics DROP STATISTICS SINHVIEN.STA_SV_TENSV * Liệt kê các Statistics EXEC sp_helpstats SINHVIEN, 'ALL' * Cập nhật Statistics UPDATE STATISTICS SINHVIEN - Khi nào Statistics được cập nhật (làm rõ ở phần sau)
  • 9. - Index là một cấu trúc dữ liệu được lưu trữ trên ổ cứng tương đương với table - Index chứa các key được xây dựng từ một hay nhiều cột trong bảng được lưu thành câu trúc dạng B-Tree cho phép việc tìm kiếm một hay tập hợp các khóa nhanh chóng 1. Clustered Index * Clustered Index Demo CLUSTERED INDEX PK_SINHVIEN ON SINHVIEN(MaSV) * Non-Clustered Index CREATE CLUSTERED INDEX [IndexName] ON [TableName]([ColumnName]) - Clustered Index sắp xếp và lưu trữ dữ liệu ở tầng vật lý (ngay trên bảng) - Clustered Index được tạo mặc định cho cột khóa chính trong bảng
  • 10. 1. Non-Clustered Index * Non-Clustered Index Demo CREATE NONCLUSTERED INDEX [IndexName] ON [TableName](ColumnName) SV00004 con trỏ tới dòng dữ liệu tương ứng trong bảng SV00006 con trỏ tới dòng dữ liệu tương ứng trong bảng SV00008 con trỏ tới dòng dữ liệu tương ứng trong bảng SV00007 con trỏ tới dòng dữ liệu tương ứng trong bảng SV00009 con trỏ tới dòng dữ liệu tương ứng trong bảng SV00002 con trỏ tới dòng dữ liệu tương ứng trong bảng SV00010 con trỏ tới dòng dữ liệu tương ứng trong bảng SV00001 con trỏ tới dòng dữ liệu tương ứng trong bảng SV00005 con trỏ tới dòng dữ liệu tương ứng trong bảng SV00003 con trỏ tới dòng dữ liệu tương ứng trong bảng - Non-Clustered Index được lưu tách biệt với dữ liệu thật trong bảng - Mỗi chỉ mục có con trỏ, trỏ đến dữ liệu thật trong bảng
  • 11. DatabaseName: Credit Table: member(member_no,lastname,firstname,middleinitial,city,phone_no) * Truy vấn ? Statistics được sử dùng như thế nào ? + Lần 1: SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WHERE m.FirstName LIKE 'Kim%' + Lần 2: SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WHERE m.FirstName LIKE 'Ki%' + Lần 3: SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WHERE m.FirstName LIKE 'K%'
  • 12. Demo DatabaseName: Credit Table: member(member_no,lastname,firstname,middleinitial,city,phone_no) * Tạo Index CREATE INDEX Member_LName ON member(Lastname, FirstName, MiddleInitial) * Truy vấn SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WHERE m.FirstName LIKE 'Kim%' Không có Statistics Có Statistic trên FirstName + Thực thi truy vấn + Câu truy vấn phát sinh Statistics Clustered Index Scan trên Index member_ident StatisticsName: _WA_Sys_00000003_0CBAE877 Logical reads: 144 + Thực thi truy vấn *member_ident: Clustered Index mặc định của Primary Key Nonclustered Index Scan trên Index Member_LName Theo thống kê có 1.96078 dòng trả về (Estimated Number of Rows) Logical reads: 46
  • 13. Demo DatabaseName: Credit Table: member(member_no,lastname,firstname,middleinitial,city,phone_no) * Truy vấn SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WHERE m.FirstName LIKE 'Ki%' + Thực thi truy vấn SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WITH(INDEX(member_ident)) WHERE m.FirstName LIKE 'Ki%' + Thực thi truy vấn Nonclustered Index Scan trên Index Member_LName Clustered Index Scan trên Index member_ident Estimated Number of Rows : 19.6078 dòng Estimated Number of Rows : 19.6078 dòng Logical reads: 82 Logical reads: 144 Chi phí thực hiện truy vấn Thấp Cao
  • 14. Demo DatabaseName: Credit Table: member(member_no,lastname,firstname,middleinitial,city,phone_no) * Truy vấn SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WHERE m.FirstName LIKE 'K%' + Thực thi truy vấn SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WITH(INDEX(Member_LName)) WHERE m.FirstName LIKE 'K%' + Thực thi truy vấn Clustered Index Scan trên Index member_ident Nonclustered Index Scan trên Index Member_LName Estimated Number of Rows : 431,373 dòng Estimated Number of Rows : 431,373 dòng Logical reads: 144 Logical reads: 935 Chi phí thực hiện truy vấn Thấp Cao
  • 15. Demo DatabaseName: Credit Table: member(member_no,lastname,firstname,middleinitial,city,phone_no) * Update dữ liệu ? Khi nào Statistics được cập nhật ? UPDATE member SET firstname = 'Kimberly' WHERE member_no >= 1 AND member_no <= 1000 Update 1.000 dòng = 10% tổng số dòng Tổng số dòng: 10.000 * Truy vấn SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WITH (INDEX (member_ident)) WHERE m.FirstName LIKE 'Kim%' + Thực thi truy vấn Clustered Index Scan trên Index member_ident Logical reads: 144 SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WHERE m.FirstName LIKE 'Kim%' + Thực thi truy vấn Nonclustered Index Scan trên Index Member_LName Logical reads: 2072 Estimated Number of Rows : 1.96078 dòng Actual Number of Rows: 1001
  • 16. Demo DatabaseName: Credit Table: member(member_no,lastname,firstname,middleinitial,city,phone_no) * Update dữ liệu UPDATE member SET firstname = 'Kimberly' WHERE member_no > 1000 AND member_no <= 2500 Số dòng Updaet 1.500 dòng = 15% tổng số dòng Số dòng Update: 1000 + 1500 = 2500 dòng > 20% tổng số dòng * Truy vấn SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WITH (INDEX (member_ident)) WHERE m.FirstName LIKE 'Kim%' + Thực thi truy vấn Clustered Index Scan trên Index member_ident Logical reads: 144 SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.City FROM dbo.Member AS m WHERE m.FirstName LIKE 'Kim%' + Thực thi truy vấn Clustered Index Scan trên Index member_ident Logical reads: 144 Estimated Number of Rows : 2509,8 dòng Actual Number of Rows: 2501
  • 17. - Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu - Tùy chọn Auto Create Statistics cho db là true - Không nhất thiết tạo Index cho thuộc tính không thường xuyên truy vấn - Cần có kế hoạch truy vấn rõ ràng để quản lý Statistics - Update Statistics bằng Transact-SQL để đảm bảo truy vấn luôn tối ưu
  • 19.
  • 22. STATISTICS TẠO ĐỒNG THỜI VỚI INDEX
  • 23. CÂU TRUY VẤN PHÁT SINH STATISTICS
  • 24. TẠO STATISTICS BẰNG TRANSCT-SQL