SlideShare a Scribd company logo
1 of 19
Index trong oracle
RIKKEISOFT
05/29/2016
VienNN
© Copyright 2016 Rikkeisoft
Outline
1. What: Index là gì.
2. When: Khi nào thì nên dùng index.
3. Classification index : Các loại index trong oracle.
4. How: Sử dụng index như nào.
5. Avoid: Những điều nên tránh khi sử dụng để không bị mất
tác dụng của index.
6. Quit.
© Copyright 2016 Rikkeisoft
1. What
• Là phương pháp sử dụng để tăng nhanh thời gian và hiệu
suất tìm kiếm dữ liệu mà không cần đọc dữ liệu toàn bộ
bảng (Full table scan).
• Index là một đối tượng trong hệ quản trị cơ sở dữ liệu – là
một cấu trúc dữ liệu được sử dụng nhằm tăng tốc độ tìm
kiếm trong một table, nó giống như ‘chỉ mục’ trong thư viện
giúp cho người đọc tìm kiếm sách mình cần một cách
nhanh chóng và hiệu quả hay phần mục lục của mỗi cuốn
sách giúp ta đến chổ cần đọc nhanh hơn.
© Copyright 2016 Rikkeisoft
1. What
• Chỉ mục giúp tăng tốc các truy vấn SELECT và các mệnh
đề WHERE, nhưng nó làm chậm việc dữ liệu nhập vào,
với các lệnh UPDATE và INSERT. Tùy trường hợp cần
thiết mới nên sử dụng index.
© Copyright 2016 Rikkeisoft
2. When
• Mặc dù các chỉ mục nhằm mục đích để nâng cao hiệu suất
của Database, nhưng đôi khi, bạn nên tránh dùng chúng.
Dưới đây là một số điểm bạn cần xem xét để quyết định có
nên sử dụng Index hay không.
– Các chỉ mục không nên được sử dụng trong các bảng nhỏ
• Các bảng mà không thường xuyên có data cần insert.
– Bảng mà thường xuyên có các hoạt động update, insert (Bit map
index)
• Vì mỗi lần update hoặc insert nó rất chậm vì chiếm nhiều tài nguyên trên máy.
– Các chỉ mục không nên được sử dụng trên các cột mà chứa một số
lượng lớn giá trị NULL
– Không nên dùng chỉ mục trên các cột mà thường xuyên bị sửa đổi.
© Copyright 2016 Rikkeisoft
3. Classification index
• Để phục vụ nhu cầu của việc performance oracle có cung cấp
vài loại index, và mỗi loại index có lợi thế khác nhau trong
việc giúp truy xuất dữ liệu nhanh hơn.
• B-tree indexes
• Bitmap indexes (and bitmap join indexes)
• Index-organized tables (IOT)
• Hash Clusters
• Index Cluster
• Nested Tables
• Tuy nhiên trong buổi trình bày hôm nay tôi chỉ nói về
2 loại “B-tree indexes” và “Bitmap indexes ”, còn về
các loại khác các bạn có thể tìm hiểu thêm.
© Copyright 2016 Rikkeisoft
3. Classification index
• Một số lưu ý khi sử dụng index tránh sử dụng các trường hợp
sau.
– Bảng mà thường xuyên có các hoạt động update, insert
• Nếu 1 bảng mà hay có thay đổi về dữ liệu, thì index nó sẽ dễ bị đảo lộn hoặc nhầm
lẫn.
– Các chỉ mục không nên được sử dụng trên các cột mà chứa một số
lượng lớn giá trị NULL.
– Không nên dùng chỉ mục trên các cột mà thường xuyên bị sửa đổi.
© Copyright 2016 Rikkeisoft
3. Classification index
• B-tree index
– Dữ liệu index trong B-Tree được tổ chức và lưu trữ theo dạng tree,
tức là có root, branch, leaf. Giá trị của các node được tổ chức tăng
dần từ trái qua phải.
• B-Tree index được sử dụng trong các biểu thức so sánh dạng: =, >, >=, <, <=,
BETWEEN và LIKE.
– Khi truy vấn dữ liệu thì việc tìm kiếm trong B-Tree là 1 quá trình đệ
quy, bắt đầu từ root node và tìm kiếm tới branch và leaf, đến khi tìm
được tất cả dữ liệu - thỏa mãn với điều kiện truy vấn thì mới dùng lại.
– B-Tree index được sử dụng cho những column trong bảng khi muốn
tìm kiếm 1 giá trị nằm trong khoảng nào đó. Ví dụ: tìm kiếm những
sinh viên có id từ 1-9.
– Dưới đây là dạng cấu trúc của B-tree index.
© Copyright 2016 Rikkeisoft
3. Classification index
• B-tree index
.
© Copyright 2016 Rikkeisoft
3. Classification index
• Bit map index
– Mỗi lút lá chứa một bit map (bản đồ ánh xạ bit) đối với mỗi giá trị
khóa thay vì là danh sách các giá trị rowid.
– Mỗi bit trong map chứa 1 bit riêng rẽ (0 or 1) cho mỗi dòng.
• ‘1’ là row phù hợp trong bit map.
• ‘0’ là row không phù hợp trong bit map
– Nên sử dụng với các cột trong bảng mà có giá trị lặp đi lặp lại nhiều
lần.
– Dưới đây là cấu trúc của dạng index bit map
© Copyright 2016 Rikkeisoft
3. Classification index
© Copyright 2016 Rikkeisoft
4. How
– Tạo data có thể dùng tool sql developer hoặc sql plus đi kèm khi
cài oracle.
– Copy data từ bảng trên sang bảng test_index
– Cú pháp tạo B-tree in dex
© Copyright 2016 Rikkeisoft
4. How
• Tạo B-tree index(khi tại index nếu không viết rõ ràng mặc định là
b-tree index).
– CREATE INDEX [index_name] ON table_name(ename);
– Có thể tạo một index trên nhiều cột
• CREATE INDEX [index_name] ON table_name(column1,column2..);
– Nếu muốn dùng index function với upper hoặc lower trong oracle phải
tạo index trên các function đó trước khi sử dụng.
• CREATE INDEX [index_name_function] ON table_name(UPPER(column));
© Copyright 2016 Rikkeisoft
4. How
• Tạo Bitmap- index.
– CREATE BITMAP INDEX [index_name] ON table_name(ename);
– Có thể tạo một index trên nhiều cột
• CREATE BITMAP INDEX [index_name] ON table_name(column1,column2..);
© Copyright 2016 Rikkeisoft
5. Avoid
• B tree index
– Để tránh làm mất tác dụng của index khi truy vấn ta cần lưu ý
• Không nên sử dụng hàm đối với trường đánh index:
– SELECT * FROM TEST_INDEX WHERE UPPER ('CUST_FIRST_NAME) = UPPER
('CUST_FIRST_NAME ');
• Không nên sử dụng sử dụng toán tử not like, not in, <> với trường đánh index
– SELECT * FROM TEST_INDEX WHERE CUST_FIRST_NAME NOT LIKE
'CUST_FIRST_NAME%';
– SELECT * FROM TEST_INDEX WHERE CUST_FIRST_NAME NOT IN
('CUST_FIRST_NAME‘,’ 'CUST_FIRST_NAME2’);
– SELECT * FROM TEST_INDEX WHERE CUST_FIRST_NAME <> 'CUST_FIRST_NAME‘;
© Copyright 2016 Rikkeisoft
5. Avoid
• Không nên sử dụng like ‘%str’
– SELECT * FROM TEST_INDEX WHERE CUST_FIRST_NAME LIKE
‘%CUST_FIRST_NAME’;
• không dùng Index cho cột dữ liệu kết hợp với bất kì thành phần khác
– SELECT * FROM TEST_INDEX WHERE CUST_ID+1=1;
– Để xem được plan của index dùng tool SQL*PLUS
– Nhập username có quyền cao nhất khi cài oracle (SYS
OR SYSTEM).
– Nhập password.
– SET AUTOTRACE ON.
– SELECT * FROM INDEX_DEMO WHERE FULLNAME LIKE
‘JONATHAN%’;
© Copyright 2016 Rikkeisoft
5. Avoid
• Lưu ý
• Nếu sử dụng Index trên nhiều column, thì sẽ chỉ sử dụng column đầu tiên
(và thứ 2 nếu có nhiều hơn 2 column) được đánh index.
© Copyright 2016 Rikkeisoft
6. Quit
© Copyright 2016 Rikkeisoft
Thanks you
RIKKEISOFT
© Copyright 2016 Rikkeisoft

More Related Content

What's hot

Bai giang hệ quản trị cơ sở dữ liệu
Bai giang hệ quản trị cơ sở dữ liệuBai giang hệ quản trị cơ sở dữ liệu
Bai giang hệ quản trị cơ sở dữ liệutrinhvannam-90
 
Introduction to oracle database (basic concepts)
Introduction to oracle database (basic concepts)Introduction to oracle database (basic concepts)
Introduction to oracle database (basic concepts)Bilal Arshad
 
Bài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuBài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuMasterCode.vn
 
Ebook oracle-thuc-hanh-nguyen-huu-trong
Ebook oracle-thuc-hanh-nguyen-huu-trongEbook oracle-thuc-hanh-nguyen-huu-trong
Ebook oracle-thuc-hanh-nguyen-huu-trongngobacuong
 
Slide 1 - Thiết kế Web cơ bản
 Slide 1 - Thiết kế Web cơ bản Slide 1 - Thiết kế Web cơ bản
Slide 1 - Thiết kế Web cơ bảnSống Khác
 
An Introduction To Oracle Database
An Introduction To Oracle DatabaseAn Introduction To Oracle Database
An Introduction To Oracle DatabaseMeysam Javadi
 
Monitor và tối ưu sql server
Monitor và tối ưu sql serverMonitor và tối ưu sql server
Monitor và tối ưu sql serverHuân Bùi Đình
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQLJoel Brewer
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệutrieulongweb
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQLJim Mlodgenski
 
DBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLEDBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLEMinh Tri Lam
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1pisu412
 
Co so du lieu t sql
Co so du lieu t sqlCo so du lieu t sql
Co so du lieu t sqlANHMATTROI
 
Hybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS ApplicationsHybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS ApplicationsSteven Francia
 
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)Hoa Le
 
Advance database system(part 8)
Advance database system(part 8)Advance database system(part 8)
Advance database system(part 8)Abdullah Khosa
 
Introduction of sql server indexing
Introduction of sql server indexingIntroduction of sql server indexing
Introduction of sql server indexingMahabubur Rahaman
 
Oracle Database Overview
Oracle Database OverviewOracle Database Overview
Oracle Database Overviewhonglee71
 

What's hot (20)

Bai giang hệ quản trị cơ sở dữ liệu
Bai giang hệ quản trị cơ sở dữ liệuBai giang hệ quản trị cơ sở dữ liệu
Bai giang hệ quản trị cơ sở dữ liệu
 
Index in sql server
Index in sql serverIndex in sql server
Index in sql server
 
Introduction to oracle database (basic concepts)
Introduction to oracle database (basic concepts)Introduction to oracle database (basic concepts)
Introduction to oracle database (basic concepts)
 
Bài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệuBài 5: Chuẩn hóa cơ sở dữ liệu
Bài 5: Chuẩn hóa cơ sở dữ liệu
 
Ebook oracle-thuc-hanh-nguyen-huu-trong
Ebook oracle-thuc-hanh-nguyen-huu-trongEbook oracle-thuc-hanh-nguyen-huu-trong
Ebook oracle-thuc-hanh-nguyen-huu-trong
 
Slide 1 - Thiết kế Web cơ bản
 Slide 1 - Thiết kế Web cơ bản Slide 1 - Thiết kế Web cơ bản
Slide 1 - Thiết kế Web cơ bản
 
An Introduction To Oracle Database
An Introduction To Oracle DatabaseAn Introduction To Oracle Database
An Introduction To Oracle Database
 
Monitor và tối ưu sql server
Monitor và tối ưu sql serverMonitor và tối ưu sql server
Monitor và tối ưu sql server
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQL
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệu
 
Introduction to PostgreSQL
Introduction to PostgreSQLIntroduction to PostgreSQL
Introduction to PostgreSQL
 
DBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLEDBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLE
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
 
Co so du lieu t sql
Co so du lieu t sqlCo so du lieu t sql
Co so du lieu t sql
 
Hybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS ApplicationsHybrid MongoDB and RDBMS Applications
Hybrid MongoDB and RDBMS Applications
 
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
 
Advance database system(part 8)
Advance database system(part 8)Advance database system(part 8)
Advance database system(part 8)
 
Introduction of sql server indexing
Introduction of sql server indexingIntroduction of sql server indexing
Introduction of sql server indexing
 
Sql Server Basics
Sql Server BasicsSql Server Basics
Sql Server Basics
 
Oracle Database Overview
Oracle Database OverviewOracle Database Overview
Oracle Database Overview
 

Viewers also liked

Giao trinh-oracle-tieng-viet[bookbooming.com]
Giao trinh-oracle-tieng-viet[bookbooming.com]Giao trinh-oracle-tieng-viet[bookbooming.com]
Giao trinh-oracle-tieng-viet[bookbooming.com]bookbooming1
 
Tai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracleTai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracleKiet Tran
 
Bai kiem tra hqtcsdl Oracle khoa CNTT DHCT
Bai kiem tra hqtcsdl Oracle khoa CNTT DHCTBai kiem tra hqtcsdl Oracle khoa CNTT DHCT
Bai kiem tra hqtcsdl Oracle khoa CNTT DHCTsin216
 
Tema 2 implementar el demo zk
Tema 2   implementar el demo zkTema 2   implementar el demo zk
Tema 2 implementar el demo zkGiovanni Flores
 
Hdsd quan triwebjoomla
Hdsd quan triwebjoomlaHdsd quan triwebjoomla
Hdsd quan triwebjoomlaViet Tran
 
Giao trinh oracle[bookbooming.com]
Giao trinh oracle[bookbooming.com]Giao trinh oracle[bookbooming.com]
Giao trinh oracle[bookbooming.com]bookbooming1
 
Tema 1 mi primera aplicacion zk con netbeans y rem
Tema 1   mi primera aplicacion zk con netbeans y remTema 1   mi primera aplicacion zk con netbeans y rem
Tema 1 mi primera aplicacion zk con netbeans y remGiovanni Flores
 
Tập trung hay là chết
Tập trung hay là chếtTập trung hay là chết
Tập trung hay là chếtbookbooming1
 
Design Patterns in ZK: Java MVVM as Model-View-Binder
Design Patterns in ZK: Java MVVM as Model-View-BinderDesign Patterns in ZK: Java MVVM as Model-View-Binder
Design Patterns in ZK: Java MVVM as Model-View-BinderSimon Massey
 
AntoanbaomatQQQQQQQQQ
AntoanbaomatQQQQQQQQQAntoanbaomatQQQQQQQQQ
AntoanbaomatQQQQQQQQQViet Tran
 
Phần mềm quản lý doanh nghiệp ERP
Phần mềm quản lý doanh nghiệp ERPPhần mềm quản lý doanh nghiệp ERP
Phần mềm quản lý doanh nghiệp ERPCao Thừa
 
Tài liệu data warehouse vietsub
Tài liệu data warehouse  vietsubTài liệu data warehouse  vietsub
Tài liệu data warehouse vietsubhoangdat1361
 
Nhom 16 big data
Nhom 16 big dataNhom 16 big data
Nhom 16 big dataDuy Phan
 
jQuery Presentation
jQuery PresentationjQuery Presentation
jQuery PresentationRod Johnson
 
Java Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsJava Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsBG Java EE Course
 

Viewers also liked (18)

Giới thiệu zk framework
Giới thiệu  zk frameworkGiới thiệu  zk framework
Giới thiệu zk framework
 
Giao trinh-oracle-tieng-viet[bookbooming.com]
Giao trinh-oracle-tieng-viet[bookbooming.com]Giao trinh-oracle-tieng-viet[bookbooming.com]
Giao trinh-oracle-tieng-viet[bookbooming.com]
 
ZK framework
ZK frameworkZK framework
ZK framework
 
Tai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracleTai lieu quan tri he thong erp oracle
Tai lieu quan tri he thong erp oracle
 
Bai kiem tra hqtcsdl Oracle khoa CNTT DHCT
Bai kiem tra hqtcsdl Oracle khoa CNTT DHCTBai kiem tra hqtcsdl Oracle khoa CNTT DHCT
Bai kiem tra hqtcsdl Oracle khoa CNTT DHCT
 
Tema 2 implementar el demo zk
Tema 2   implementar el demo zkTema 2   implementar el demo zk
Tema 2 implementar el demo zk
 
Hdsd quan triwebjoomla
Hdsd quan triwebjoomlaHdsd quan triwebjoomla
Hdsd quan triwebjoomla
 
Giao trinh oracle[bookbooming.com]
Giao trinh oracle[bookbooming.com]Giao trinh oracle[bookbooming.com]
Giao trinh oracle[bookbooming.com]
 
Tema 1 mi primera aplicacion zk con netbeans y rem
Tema 1   mi primera aplicacion zk con netbeans y remTema 1   mi primera aplicacion zk con netbeans y rem
Tema 1 mi primera aplicacion zk con netbeans y rem
 
Understand
UnderstandUnderstand
Understand
 
Tập trung hay là chết
Tập trung hay là chếtTập trung hay là chết
Tập trung hay là chết
 
Design Patterns in ZK: Java MVVM as Model-View-Binder
Design Patterns in ZK: Java MVVM as Model-View-BinderDesign Patterns in ZK: Java MVVM as Model-View-Binder
Design Patterns in ZK: Java MVVM as Model-View-Binder
 
AntoanbaomatQQQQQQQQQ
AntoanbaomatQQQQQQQQQAntoanbaomatQQQQQQQQQ
AntoanbaomatQQQQQQQQQ
 
Phần mềm quản lý doanh nghiệp ERP
Phần mềm quản lý doanh nghiệp ERPPhần mềm quản lý doanh nghiệp ERP
Phần mềm quản lý doanh nghiệp ERP
 
Tài liệu data warehouse vietsub
Tài liệu data warehouse  vietsubTài liệu data warehouse  vietsub
Tài liệu data warehouse vietsub
 
Nhom 16 big data
Nhom 16 big dataNhom 16 big data
Nhom 16 big data
 
jQuery Presentation
jQuery PresentationjQuery Presentation
jQuery Presentation
 
Java Server Faces (JSF) - Basics
Java Server Faces (JSF) - BasicsJava Server Faces (JSF) - Basics
Java Server Faces (JSF) - Basics
 

Similar to Huong dan dung index_oracle

Power BI KTDTT trong chuyển đổi số .pptx
Power BI KTDTT trong chuyển đổi số .pptxPower BI KTDTT trong chuyển đổi số .pptx
Power BI KTDTT trong chuyển đổi số .pptxThanh Ngo
 
01 sql ddl_commands
01 sql ddl_commands01 sql ddl_commands
01 sql ddl_commandsthai
 
Bài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverBài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverMasterCode.vn
 

Similar to Huong dan dung index_oracle (7)

Training sql2
Training sql2Training sql2
Training sql2
 
Training sql1
Training sql1Training sql1
Training sql1
 
Power BI KTDTT trong chuyển đổi số .pptx
Power BI KTDTT trong chuyển đổi số .pptxPower BI KTDTT trong chuyển đổi số .pptx
Power BI KTDTT trong chuyển đổi số .pptx
 
01 sql ddl_commands
01 sql ddl_commands01 sql ddl_commands
01 sql ddl_commands
 
04 query
04 query04 query
04 query
 
IC3 GS4 Access
IC3 GS4 AccessIC3 GS4 Access
IC3 GS4 Access
 
Bài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverBài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL server
 

Huong dan dung index_oracle

  • 2. Outline 1. What: Index là gì. 2. When: Khi nào thì nên dùng index. 3. Classification index : Các loại index trong oracle. 4. How: Sử dụng index như nào. 5. Avoid: Những điều nên tránh khi sử dụng để không bị mất tác dụng của index. 6. Quit. © Copyright 2016 Rikkeisoft
  • 3. 1. What • Là phương pháp sử dụng để tăng nhanh thời gian và hiệu suất tìm kiếm dữ liệu mà không cần đọc dữ liệu toàn bộ bảng (Full table scan). • Index là một đối tượng trong hệ quản trị cơ sở dữ liệu – là một cấu trúc dữ liệu được sử dụng nhằm tăng tốc độ tìm kiếm trong một table, nó giống như ‘chỉ mục’ trong thư viện giúp cho người đọc tìm kiếm sách mình cần một cách nhanh chóng và hiệu quả hay phần mục lục của mỗi cuốn sách giúp ta đến chổ cần đọc nhanh hơn. © Copyright 2016 Rikkeisoft
  • 4. 1. What • Chỉ mục giúp tăng tốc các truy vấn SELECT và các mệnh đề WHERE, nhưng nó làm chậm việc dữ liệu nhập vào, với các lệnh UPDATE và INSERT. Tùy trường hợp cần thiết mới nên sử dụng index. © Copyright 2016 Rikkeisoft
  • 5. 2. When • Mặc dù các chỉ mục nhằm mục đích để nâng cao hiệu suất của Database, nhưng đôi khi, bạn nên tránh dùng chúng. Dưới đây là một số điểm bạn cần xem xét để quyết định có nên sử dụng Index hay không. – Các chỉ mục không nên được sử dụng trong các bảng nhỏ • Các bảng mà không thường xuyên có data cần insert. – Bảng mà thường xuyên có các hoạt động update, insert (Bit map index) • Vì mỗi lần update hoặc insert nó rất chậm vì chiếm nhiều tài nguyên trên máy. – Các chỉ mục không nên được sử dụng trên các cột mà chứa một số lượng lớn giá trị NULL – Không nên dùng chỉ mục trên các cột mà thường xuyên bị sửa đổi. © Copyright 2016 Rikkeisoft
  • 6. 3. Classification index • Để phục vụ nhu cầu của việc performance oracle có cung cấp vài loại index, và mỗi loại index có lợi thế khác nhau trong việc giúp truy xuất dữ liệu nhanh hơn. • B-tree indexes • Bitmap indexes (and bitmap join indexes) • Index-organized tables (IOT) • Hash Clusters • Index Cluster • Nested Tables • Tuy nhiên trong buổi trình bày hôm nay tôi chỉ nói về 2 loại “B-tree indexes” và “Bitmap indexes ”, còn về các loại khác các bạn có thể tìm hiểu thêm. © Copyright 2016 Rikkeisoft
  • 7. 3. Classification index • Một số lưu ý khi sử dụng index tránh sử dụng các trường hợp sau. – Bảng mà thường xuyên có các hoạt động update, insert • Nếu 1 bảng mà hay có thay đổi về dữ liệu, thì index nó sẽ dễ bị đảo lộn hoặc nhầm lẫn. – Các chỉ mục không nên được sử dụng trên các cột mà chứa một số lượng lớn giá trị NULL. – Không nên dùng chỉ mục trên các cột mà thường xuyên bị sửa đổi. © Copyright 2016 Rikkeisoft
  • 8. 3. Classification index • B-tree index – Dữ liệu index trong B-Tree được tổ chức và lưu trữ theo dạng tree, tức là có root, branch, leaf. Giá trị của các node được tổ chức tăng dần từ trái qua phải. • B-Tree index được sử dụng trong các biểu thức so sánh dạng: =, >, >=, <, <=, BETWEEN và LIKE. – Khi truy vấn dữ liệu thì việc tìm kiếm trong B-Tree là 1 quá trình đệ quy, bắt đầu từ root node và tìm kiếm tới branch và leaf, đến khi tìm được tất cả dữ liệu - thỏa mãn với điều kiện truy vấn thì mới dùng lại. – B-Tree index được sử dụng cho những column trong bảng khi muốn tìm kiếm 1 giá trị nằm trong khoảng nào đó. Ví dụ: tìm kiếm những sinh viên có id từ 1-9. – Dưới đây là dạng cấu trúc của B-tree index. © Copyright 2016 Rikkeisoft
  • 9. 3. Classification index • B-tree index . © Copyright 2016 Rikkeisoft
  • 10. 3. Classification index • Bit map index – Mỗi lút lá chứa một bit map (bản đồ ánh xạ bit) đối với mỗi giá trị khóa thay vì là danh sách các giá trị rowid. – Mỗi bit trong map chứa 1 bit riêng rẽ (0 or 1) cho mỗi dòng. • ‘1’ là row phù hợp trong bit map. • ‘0’ là row không phù hợp trong bit map – Nên sử dụng với các cột trong bảng mà có giá trị lặp đi lặp lại nhiều lần. – Dưới đây là cấu trúc của dạng index bit map © Copyright 2016 Rikkeisoft
  • 11. 3. Classification index © Copyright 2016 Rikkeisoft
  • 12. 4. How – Tạo data có thể dùng tool sql developer hoặc sql plus đi kèm khi cài oracle. – Copy data từ bảng trên sang bảng test_index – Cú pháp tạo B-tree in dex © Copyright 2016 Rikkeisoft
  • 13. 4. How • Tạo B-tree index(khi tại index nếu không viết rõ ràng mặc định là b-tree index). – CREATE INDEX [index_name] ON table_name(ename); – Có thể tạo một index trên nhiều cột • CREATE INDEX [index_name] ON table_name(column1,column2..); – Nếu muốn dùng index function với upper hoặc lower trong oracle phải tạo index trên các function đó trước khi sử dụng. • CREATE INDEX [index_name_function] ON table_name(UPPER(column)); © Copyright 2016 Rikkeisoft
  • 14. 4. How • Tạo Bitmap- index. – CREATE BITMAP INDEX [index_name] ON table_name(ename); – Có thể tạo một index trên nhiều cột • CREATE BITMAP INDEX [index_name] ON table_name(column1,column2..); © Copyright 2016 Rikkeisoft
  • 15. 5. Avoid • B tree index – Để tránh làm mất tác dụng của index khi truy vấn ta cần lưu ý • Không nên sử dụng hàm đối với trường đánh index: – SELECT * FROM TEST_INDEX WHERE UPPER ('CUST_FIRST_NAME) = UPPER ('CUST_FIRST_NAME '); • Không nên sử dụng sử dụng toán tử not like, not in, <> với trường đánh index – SELECT * FROM TEST_INDEX WHERE CUST_FIRST_NAME NOT LIKE 'CUST_FIRST_NAME%'; – SELECT * FROM TEST_INDEX WHERE CUST_FIRST_NAME NOT IN ('CUST_FIRST_NAME‘,’ 'CUST_FIRST_NAME2’); – SELECT * FROM TEST_INDEX WHERE CUST_FIRST_NAME <> 'CUST_FIRST_NAME‘; © Copyright 2016 Rikkeisoft
  • 16. 5. Avoid • Không nên sử dụng like ‘%str’ – SELECT * FROM TEST_INDEX WHERE CUST_FIRST_NAME LIKE ‘%CUST_FIRST_NAME’; • không dùng Index cho cột dữ liệu kết hợp với bất kì thành phần khác – SELECT * FROM TEST_INDEX WHERE CUST_ID+1=1; – Để xem được plan của index dùng tool SQL*PLUS – Nhập username có quyền cao nhất khi cài oracle (SYS OR SYSTEM). – Nhập password. – SET AUTOTRACE ON. – SELECT * FROM INDEX_DEMO WHERE FULLNAME LIKE ‘JONATHAN%’; © Copyright 2016 Rikkeisoft
  • 17. 5. Avoid • Lưu ý • Nếu sử dụng Index trên nhiều column, thì sẽ chỉ sử dụng column đầu tiên (và thứ 2 nếu có nhiều hơn 2 column) được đánh index. © Copyright 2016 Rikkeisoft
  • 18. 6. Quit © Copyright 2016 Rikkeisoft