Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

customer.pk_name tham gia giao dịch.fk_name so với khách hàng.pk_id [serial] tham gia giao dịch.fk_id [số nguyên]

Họ nói đúng. Tham gia vào trường văn bản CHAR (30) - đặc biệt là trường chứa dữ liệu tên người - sẽ chậm, kém hiệu quả và cực kỳ mong manh. Mọi người thay đổi tên của họ (kết hôn là một ví dụ rõ ràng) và nhiều người có thể có cùng một tên.

Bạn muốn tạo các chỉ mục thích hợp trên các bảng của mình để hỗ trợ thứ tự bạn muốn dữ liệu xuất hiện và quên phân nhóm. Quy trình tối ưu hóa hiệu suất của bạn nghe giống như một thảm họa đang tìm kiếm một nơi xảy ra. Xin lỗi, nhưng việc bỏ / tạo các bảng như vậy sẽ gây rắc rối.

Tôi sẽ bắt đầu với một CHỈ SỐ DUY NHẤT trên customer.id, một CHỈ SỐ DUY NHẤT trên transaction.ticket_number và một INDEX (cho hiệu suất hơn là thẻ số, vì vậy việc thực thi tính duy nhất không quá quan trọng) trên các giao dịch (id, ticket_number DESC) và lấy nó từ ở đó. Dữ liệu được trả về từ bảng giao dịch theo thứ tự xuất hiện trong chỉ mục.

Tôi chỉ xem xét việc phân cụm khi tất cả các cách khác để tối ưu hóa truy vấn đã hết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:Phân tích cú pháp chuỗi được phân tách bằng dấu phẩy và sử dụng làm phép nối

  2. regexp_substr bỏ qua các vị trí trống

  3. Thứ tự tùy chỉnh trong Oracle SQL

  4. Hàm tổng hợp trong một khoảng thời gian nhất định

  5. ORA-12516, TNS:người nghe không thể tìm thấy trình xử lý có sẵn