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

9 phương pháp hay nhất để viết truy vấn SQL

Nếu bạn đang đọc bài viết này, có lẽ hầu hết bạn đã quen thuộc với SQL. Bạn biết cách viết các truy vấn SQL cơ bản. Có nhiều cách để thực thi truy vấn SQL để nhận được kết quả mong muốn trên cơ sở dữ liệu của bạn.

Tuy nhiên, không phải tất cả các truy vấn SQL đều được tạo ra như nhau. Hầu hết có thể được tối ưu hóa để tuân theo các phương pháp hay nhất về truy vấn SQL. Bài viết này tập trung vào 9 mẹo tối ưu hóa truy vấn SQL. Sau khi đọc, bạn sẽ biết tất cả những điều nên và không nên khi viết truy vấn SQL.

1. Tránh sử dụng dấu hoa thị CHỌN (CHỌN *)

Đây là một trong những phương pháp hay nhất về SQL quan trọng nhất. Truy vấn SELECT * trả về các bản ghi từ tất cả các cột của bảng. Mặc dù hữu ích trong một số trường hợp, nhưng truy vấn này thường tạo ra nhiều phức tạp:

  • Bạn có thể không cần truy xuất tất cả các cột. Tuy nhiên, SELECT * trả về tất cả chúng, tiêu tốn quá nhiều băng thông để thực hiện một truy vấn qua mạng.
  • Tên cột trong bảng có thể được thay đổi hoặc loại bỏ và có thể thêm các cột mới. Do đó, bạn có thể nhận được kết quả không mong muốn cho truy vấn SELECT *. Chỉ định tên cột là một ý tưởng hay hơn.
  • SELECT * chậm hơn SELECT Tên cột vì tên sau có thể sử dụng chỉ mục cột để trả về dữ liệu.
  • Thứ tự của các cột được trả về bởi SELECT * không nằm trong tầm kiểm soát của bạn. Tuy nhiên, bạn xác định thứ tự mong muốn khi chỉ định tên cột.

2. Sử dụng chính xác mệnh đề WHERE và HAVING

Mệnh đề WHERE và HAVING trong SQL có các chức năng khác nhau. Do đó, chúng ta nên sử dụng chúng theo cách khác. Dưới đây là ba trường hợp sử dụng chính của WHERE và HAVING:

  • WHERE có thể được sử dụng với các truy vấn CRUD, tức là CHỌN, CHÈN, CẬP NHẬT, XÓA. Mặt khác, bạn chỉ có thể sử dụng HAVING với câu lệnh SELECT.
  • WHERE lọc dữ liệu trước bất kỳ hoạt động tổng hợp nào, chẳng hạn như GROUP BY. Sau đó, nó có thể được sử dụng mà không cần bất kỳ chức năng tổng hợp nào. HAVING nên được sử dụng sau khi tổng hợp.
  • Chúng ta có thể sử dụng các hàm tổng hợp, chẳng hạn như SUM, MIN, MAX COUNT với mệnh đề HAVING. Với mệnh đề WHERE, chúng ta không thể sử dụng các hàm tổng hợp, trừ khi mệnh đề này là một phần của truy vấn con chứa trong mệnh đề HAVING.

3. Sử dụng Truy vấn INNER JOIN thay vì Mệnh đề WHERE để tham gia các bảng

Truy vấn JOIN có lẽ là một trong những truy vấn SQL hữu ích nhất. Nó cho phép bạn CHỌN dữ liệu từ nhiều bảng. Mặc dù bạn có thể sử dụng mệnh đề WHERE để lấy dữ liệu tổng hợp từ hai bảng, nhưng mệnh đề WHERE rất kém hiệu quả.

Mệnh đề WHERE trả về CROSS JOIN là một sản phẩm của các bản ghi trong cả hai cột. Ví dụ:nếu bạn có 1.000 bản ghi trong bảng A và cùng một số bản ghi trong bảng B, mệnh đề WHERE sẽ tạo một CROSS JOIN với 1.000 x 1.000 =1.000.000 bản ghi.

Nếu các cột của bảng A và B liên quan đến mệnh đề WHERE chỉ có 1.000 giá trị chung, mệnh đề WHERE sẽ trả về 1.000 bản ghi từ 1.000.000 bản ghi ban đầu được tạo bởi sản phẩm cartesian.

Mệnh đề INNER JOIN chỉ trả về 1.000 bản ghi trong đó cả bảng A và B đều có giá trị chung trong các cột. Trong trường hợp này, INNER JOIN có ít công việc hơn 1.000 lần so với mệnh đề WHERE.

Một số cơ sở dữ liệu chuyển đổi mệnh đề WHERE trong truy vấn JOIN thành mệnh đề INNER JOIN đằng sau cảnh. Tuy nhiên, bạn nên sử dụng INNER JOIN một cách rõ ràng thay vì mệnh đề WHERE để tuân theo các phương pháp hay nhất về mã hóa SQL.

4. Sử dụng TỒN TẠI, KHÔNG TỒN TẠI thay vì IN và NOT IN trong SQL

Luôn sử dụng EXIST trên mệnh đề IN nếu bạn muốn xác nhận sự tồn tại của một giá trị trong một bảng cụ thể.

Quá trình thực hiện mệnh đề EXISTS dừng ngay sau khi nó tìm thấy giá trị cần thiết trong bảng. Mặt khác, truy vấn IN quét tất cả ngay cả sau khi tìm thấy giá trị cần thiết.

Theo cách tương tự, bạn nên luôn sử dụng KHÔNG TỒN TẠI thay vì KHÔNG CÓ TRONG khi bạn tìm kiếm giá trị không tồn tại trong bảng.

5. Sử dụng Toán tử bằng (=) thay vì LIKE Toán tử trong SQL

Bạn có thể sử dụng cả hai toán tử =và LIKE để so khớp các chuỗi. Sự khác biệt chính giữa cả hai là toán tử LIKE được sử dụng để so khớp các ký tự đại diện như% để tìm kiếm các chuỗi một phần, trong khi toán tử bằng “=” tìm kiếm các kết quả khớp chính xác.

Nếu bạn phải chọn giữa hai, hãy luôn ưu tiên toán tử bằng (“=”), vì nó sử dụng các cột được lập chỉ mục. Do đó, nó nhanh hơn mệnh đề LIKE.

6. Sử dụng mệnh đề LIMIT để giảm kết quả tìm kiếm

Nếu bạn phải trả về dữ liệu từ nhiều bảng hoặc nhiều cột, hãy sử dụng mệnh đề LIMIT (còn được gọi là mệnh đề TOP) để giảm kết quả truy vấn. Nếu có hàng nghìn cột hoặc bạn chỉ muốn xem dữ liệu trông như thế nào trong các bảng của mình, thì không cần thiết phải trả về tất cả các hàng. Thay vào đó, hãy giới hạn số hàng được trả về bởi truy vấn SELECT với sự trợ giúp của mệnh đề LIMIT kết hợp với nó.

7. Sử dụng Bí danh Bảng khi Truy vấn Nhiều Bảng

Để tránh nhầm lẫn và ngăn cơ sở dữ liệu phân tích cú pháp tên cột khi tìm kiếm bảng chứa chúng, hãy luôn sử dụng bí danh bảng.

Bạn đã phải sử dụng bí danh / tên bảng nếu có cùng tên cột trong nhiều bảng, vì vậy điều này sẽ không làm tăng khối lượng công việc của bạn.

8. Tránh thủ tục lưu trữ tiền tố với “sp_”

Nếu bạn đã làm việc với các thủ tục được lưu trữ, thì rất có thể, bạn đã đặt trước tên thủ tục được lưu trữ bằng “sp_”. Đây không phải là điều tốt nhất.

SQL Server bắt đầu bằng cách tìm kiếm các thủ tục được lưu trữ với “sp_” ở đầu tên của chúng trong cơ sở dữ liệu chính trước khi tiếp tục tìm kiếm ở nơi khác.

Do đó, bạn có thể tiết kiệm nhiều thời gian bằng cách không đặt trước các thủ tục được lưu trữ bằng “sp_” Sau đó, thay vì cố gắng xác định thủ tục được lưu trữ trong cơ sở dữ liệu chính, máy chủ SQL sẽ trực tiếp kiểm tra dbo là chủ sở hữu của thủ tục được lưu trữ.

9. Áp dụng Kiểu Viết Truy vấn Tốt

Điều cần thiết là phải tuân theo các phương pháp hay nhất cho truy vấn SQL như các phương pháp tạo kiểu tốt khi viết truy vấn SQL. Hãy chú ý đến các đề xuất dưới đây để cải thiện phong cách viết truy vấn của bạn:

  • Luôn thêm nhận xét vào các truy vấn SQL. Nhận xét sẽ không chỉ giúp các thành viên khác trong nhóm hiểu rõ hơn các truy vấn của bạn mà còn nhắc nhở bạn về những gì bạn đã làm trong quá khứ.
  • Sử dụng các quy ước đặt tên rõ ràng. Cơ sở dữ liệu, bảng, tên cột, bảng tạm thời và các tên biến khác phải dễ đọc và rõ ràng 100%.
  • Thụt lề các truy vấn của bạn bất cứ khi nào có thể. Các truy vấn bên trong phải được thụt lề một tab từ bên trái. Tên và loại cột bên trong bảng cũng phải được thụt lề. Thụt lề đảm bảo giao diện rõ ràng hơn và cải thiện khả năng đọc của các truy vấn được phản ánh trong các phương pháp hay nhất của SQL Server cho các truy vấn.

Kết luận

SQL là một ngôn ngữ rất linh hoạt, cung cấp nhiều cách để thực hiện các tác vụ mong muốn trên cơ sở dữ liệu. Để làm cho các ứng dụng của bạn hiệu quả và năng suất hơn, đồng thời tránh các vấn đề về cơ sở dữ liệu lâu dài, hãy áp dụng các phương pháp hay nhất về tối ưu hóa truy vấn SQL hiện đại để viết các truy vấn của bạn. Các phương pháp này giúp bạn tăng tốc điều chỉnh hiệu suất trong SQL, loại bỏ các quy trình không cần thiết và làm cho tất cả công việc của bạn ngắn gọn và minh bạch hơn.

Cũng đọc

22 Ví dụ về chỉ mục SQL Nifty để tăng tốc độ truy vấn của bạn


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quần đảo T-SQL Challenge

  2. Cách dễ dàng triển khai TimescaleDB

  3. Salesforce SOQL từ Apache OpenOffice

  4. Gấu trúc:Cách đọc và ghi tệp

  5. Trình điều khiển Quickbooks ODBC