Dùng lệnh sql trong oracle linux

Trong những phần mềm liên quan nhiều đến nghiệp vụ như ngân hàng, quản lý buôn bán sản phẩm của tập đoàn... thì số lượng records trong DB rất lớn. Việc cần thiết join nhiều table với hàng trăm, chục nghìn bản ghi là thường xuyên xảy ra.Một trong những phương pháp cần thiết để tốc độ của hệ thống được đảm bảo là phải tối ưu hóa từng dòng lệnh SQL.

Index

Chỉ mục [Index] là bảng tra cứu đặc biệt mà Database Search Engine có thể sử dụng để tăng nhanh thời gian và hiệu suất thu thập dữ liệu. Hiểu đơn giản, một chỉ mục là một con trỏ tới dữ liệu trong một bảng. Một chỉ mục trong một Database là tương tự như một chỉ mục trong Mục lục của cuốn sách. Index 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. Các chỉ mục có thể được tạo hoặc xóa mà không ảnh hưởng tới dữ liệu.Việc sử dụng Index sẽ phù hợp với những DB có lượng dữ liệu lớn và ít có thay đổi như thông tin khách hàng của ngân hàng. Tạo Index như sau :

  CREATE INDEX index_name ON table_name;

Xóa Index

  DROP INDEX index_name;
Các nguyên nhân gây chậm truy vấn SQL
  1. Không/thiếu sử dụng các lợi ích của Indexes.
  2. Trả về các dữ liệu không cần thiết.
  3. Locks or deadlocks bị cấm.
  4. Các câu truy vấn được viết nghèo nàn.
  5. Không/thiếu tận dụng được I/O striping.
  6. Thiếu bộ nhớ.
Các phương pháp cải tiến

Thu hẹp giá trị trả về

việc thu hẹp giới hạn của giá trị trả về sẽ tiết kiệm bộ nhớ, I/O striping, dung lượng khi truyền từ server về client.

 SELECT * FROM table_1 LEFTJOIN table_2 WHERE table_1.id = table_2.gid;

sử dụng select * sẽ khiến SQL quét toàn bộ table,trả về dữ liệu trùng lặp tiêu tốn I/O.Truy vấn dưới đây cùng mục đích nhưng nhanh hơn.

 SELECT table_1.id,table_2.username,table_2.lucky FROM table_1 LEFTJOIN table_2 WHERE table_1.id = table_2.gid;

không hạn chế Index

  1. toán tử phủ định : Index không thể thực hiện với toán tử phủ định do đó các toán tử phía dưới sẽ làm chậm câu lệnh hãy hạn chế sử dụng.
"IS NULL", "!=", "!>", "!

Chủ Đề