Trong khi sử dụng lệnh SELECT, chỉ lấy thông tin nào cần thiết và tránh sử dụng * trong các truy vấn SELECT bởi vì nó sẽ tải hệ thống một cách không cần thiết.. Tạo các chỉ mục index
Trang 1http://vietjack.com/sql/index.jsp Copyright © vietjack.com
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1
Tuning DB trong SQL
Để trở thành một Database Expert hay một Database Administrator, bạn phải trả qua một khoảng thời gian học tập và làm việc khá dài Điều này đòi hỏi kinh nghiệm trong các Database Design đa dạng và các khóa đào tạo tốt
Với người mới bắt đầu, các hướng dẫn được liệt kê dưới đây sẽ giúp bạn cải thiện hiệu suất cơ sở
dữ liệu (Database Performance)
Sử dụng 3BNF Database Design đã được giải thích trong chương Các khái niệm về RDBMS
Tránh chuyển đổi số-thành-ký tự bởi vì các số và ký tự là khác nhau và điều này làm giảm hiệu suất cơ sở dữ liệu
Trong khi sử dụng lệnh SELECT, chỉ lấy thông tin nào cần thiết và tránh sử dụng * trong các truy vấn SELECT bởi vì nó sẽ tải hệ thống một cách không cần thiết
Tạo các chỉ mục (index) một cách cẩn thận trên tất cả các bảng, là nơi bạn thường có các hoạt động tìm kiếm Tránh sử dụng chỉ mục trên các bảng mà bạn ít sử dụng hoạt động tìm kiếm và sử dụng nhiều hoạt động chèn và cập nhật
Một Full-table Scan xuất hiện khi các cột trong mệnh đề WHERE không có một chỉ mục được liên kết với chúng Bạn có thể tránh một full-table scan bằng việc tạo một chỉ mục trên các cột mà được sử dụng như là các điều kiện trong mệnh đề WHERE của một lệnh SQL
Cẩn thận với các toán tử ngang bằng với các số thực và các giá trị date/time Cả hai loại này có thể có một sự khác nhau rất nhỏ nhưng không rõ ràng để nhìn thấy, và để tạo một
so khớp chính xác là điều không thể
Sử dụng Pattern Matching (so khớp mẫu) một cách thận trọng LIKE COL% là một điều kiện WHERE hợp lệ, giảm tập hợp được trả về, và chỉ có các bản ghi với dữ liệu bắt đầu với chuỗi COL được trả về Tuy nhiên, COL%Y lại không giảm tập hợp kết quả được trả về, bởi vì %Y không thể được ước lượng một cách hiệu quả Nỗ lực để thực hiện việc ước lượng là quá lớn và cần được xem xét lại Trong trường hợp này, COL% được sử dụng, và
%Y bị bỏ
Tinh chỉnh các truy vấn SQL của bạn bằng việc kiểm tra cấu trúc của các truy vấn (và truy vấn phụ), cú pháp SQL, để phát hiện xét xem bạn đã thiết kế bảng để hỗ trợ cho thao tác
Trang 2http://vietjack.com/sql/index.jsp Copyright © vietjack.com
http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 2
dữ liệu nhanh và các truy vấn đã viết có theo phương thức tối ưu để cho phép DBMS của bạn thao tác dữ liệu một cách hiệu quả không
Với các truy vấn mà được thực thi trên một nền tảng thông thường, bạn sử dụng các thủ tục Một thủ tục là một nhóm các lệnh SQL Thủ tục có thể được biên dịch bởi Database Engine và sau đó được thực thi Không giống một lệnh SQL, Database Engine không cần tối ưu hóa thủ tục trước khi nó được thực thi
Bạn có thể tối ưu hóa việc có một lượng dữ liệu lớn phải tải bằng việc xóa các chỉ mục Tưởng tượng về bảng với hàng nghìn hàng
Khi thực hiện Batch transaction, thực hiện COMMIT ngay sau khi một số lượng bản ghi được tạo thay vì tạo chúng sau mỗi lần tạo bản ghi
Sử dụng Defragment với Database trên một nền tảng thông thường
Tuning Tool có sẵn
Oracle có nhiều Tool để quản lý hiệu suất lệnh SQL, trong đó có hai tool khá phổ biến, đó là:
SQL
Nếu bạn muốn đánh giá đơn giản thời gian đã trôi qua của một truy vấn trong Oracle, bạn có thể
sử dụng lệnh SET TIMING ON trong SQL*Plus
Kiểm tra RDBMS Documentation để biết thêm chi tiết về các Tool và Defragment trên