SlideShare a Scribd company logo
3
Most read
5
Most read
6
Most read
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

PDF
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
PPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
PPT
Data Warehouse
PDF
Data_Warehouse
PDF
Giáo trình SQL server tiếng việt
PPT
Bài giảng cơ sở dữ liệu
DOCX
NoSql Database
PDF
Tối ưu-cau-lệnh-oracle-sql
Chương 3 Ngôn ngữ truy vấn có cấu trúc (SQL)
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Data Warehouse
Data_Warehouse
Giáo trình SQL server tiếng việt
Bài giảng cơ sở dữ liệu
NoSql Database
Tối ưu-cau-lệnh-oracle-sql

What's hot (20)

PPT
Your tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
PDF
Ebook oracle-thuc-hanh-nguyen-huu-trong
PDF
Postgresql tutorial
PDF
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
DOCX
Tip oracle
PDF
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
DOCX
[Đồ án môn học] - Đề tài: Nghiên cứu xây dựng giải pháp thu thập và quản lý ...
PDF
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
PDF
Postgresql database administration volume 1
PDF
Mastering PostgreSQL Administration
 
PPT
Lecture2 oracle ppt
PDF
Oracle Latch and Mutex Contention Troubleshooting
PDF
Báo cáo thực tập công nghệ thông tin.
PDF
Chuẩn hóa lược đồ quan hệ
PPTX
Oracle sql high performance tuning
PDF
How to Analyze and Tune MySQL Queries for Better Performance
PPT
Alfresco hệ quản lý nội dung doanh nghiệp nguồn mở
PDF
Bài 2 : Các đối tượng trong CSDL - SQL server
PDF
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
PDF
Oracle statistics by example
Your tuning arsenal: AWR, ADDM, ASH, Metrics and Advisors
Ebook oracle-thuc-hanh-nguyen-huu-trong
Postgresql tutorial
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Tip oracle
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
[Đồ án môn học] - Đề tài: Nghiên cứu xây dựng giải pháp thu thập và quản lý ...
Báo cáo ATTT CÁC DẠNG TẤN CÔNG SQL INJECTION
Postgresql database administration volume 1
Mastering PostgreSQL Administration
 
Lecture2 oracle ppt
Oracle Latch and Mutex Contention Troubleshooting
Báo cáo thực tập công nghệ thông tin.
Chuẩn hóa lược đồ quan hệ
Oracle sql high performance tuning
How to Analyze and Tune MySQL Queries for Better Performance
Alfresco hệ quản lý nội dung doanh nghiệp nguồn mở
Bài 2 : Các đối tượng trong CSDL - SQL server
Đề tài: Xây dựng hệ thống Chatbots tự động, HAY, 9đ
Oracle statistics by example
Ad

Viewers also liked (18)

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

Similar to Huong dan dung index_oracle (20)

PPTX
Management Statistics
PPTX
Training sql2
PPT
Indexing olap data
PPTX
Training sql1
PPTX
Monitor và tối ưu sql server
PPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
PDF
01 sql ddl_commands
PDF
03-Indexes.pdf
PDF
UEB Chuong 3.SV hoc di hoc di hoc di di di
PPTX
Training sql4
PPT
8268 trinh chieu_r9c_fs_20130412110709_3
PDF
Co So du lieu chuong 4 truong Dai Hoc hcm
PPTX
2 co ban ve sql
PPT
PDF
b2-ddl-create-190213084659.pdf
DOC
Vb6 16 (14)
PPT
Ngon ngu truy van sql
PDF
Cai tien trong lenh t sql cua sql server 2008 (2)
PDF
Đề án
Management Statistics
Training sql2
Indexing olap data
Training sql1
Monitor và tối ưu sql server
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 2
01 sql ddl_commands
03-Indexes.pdf
UEB Chuong 3.SV hoc di hoc di hoc di di di
Training sql4
8268 trinh chieu_r9c_fs_20130412110709_3
Co So du lieu chuong 4 truong Dai Hoc hcm
2 co ban ve sql
b2-ddl-create-190213084659.pdf
Vb6 16 (14)
Ngon ngu truy van sql
Cai tien trong lenh t sql cua sql server 2008 (2)
Đề án

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