Tất cả chúng đều tương đương về mặt chức năng. Ngay cả sự tách biệt giữa mệnh đề WHERE và điều kiện JOIN sẽ không thay đổi kết quả khi làm việc hoàn toàn với các phép nối INNER (có thể quan trọng với các phép nối OUTER). Ngoài ra, tất cả những thứ đó phải hoạt động trong cùng một kế hoạch truy vấn chính xác (sự khác biệt về hiệu suất thực sự bằng không). Thứ tự mà bạn bao gồm các mục không quan trọng . Công cụ truy vấn có thể tự do tối ưu hóa khi nó thấy phù hợp nhất trong đặc tả chức năng của truy vấn. Ngay cả khi bạn xác định hành vi cụ thể liên quan đến đặt hàng, bạn cũng không nên tin tưởng vào nó. Thông số kỹ thuật cho phép bản vá ngày mai thay đổi hành vi của ngày hôm nay trong lĩnh vực này. Hãy nhớ rằng:toàn bộ điểm của SQL là phải dựa trên bộ và khai báo :bạn cho cơ sở dữ liệu biết cái gì bạn muốn nó làm chứ không phải cách bạn muốn nó làm điều đó.
Giờ đây, tính đúng đắn và hiệu suất đã không còn nữa, chúng ta sẽ giải quyết vấn đề về phong cách:những thứ như năng suất của lập trình viên và khả năng đọc / bảo trì của mã. Về vấn đề đó, tùy chọn số 4 trong danh sách đó là cho đến nay lựa chọn tốt nhất, với # 3 là lựa chọn tốt nhất tiếp theo, đặc biệt khi bạn bắt đầu tham gia vào các truy vấn phức tạp hơn. Chỉ cần không sử dụng A,B
cú pháp nữa; nó đã lỗi thời kể từ phiên bản năm 1992 của tiêu chuẩn SQL. Luôn viết đầy đủ INNER JOIN
(hoặc LEFT JOIN
/ RIGHT JOIN
/ CROSS JOIN
vv).
Tất cả những gì đã nói, mặc dù thứ tự không (hoặc ít nhất, nên) không quan trọng đối với hiệu suất, tôi thấy hữu ích khi tôi viết SQL để sử dụng một quy ước trong cách tiếp cận của tôi mà nó ra lệnh. Điều này giúp tôi xác định lỗi hoặc giả định sai sau này khi gỡ lỗi và khắc phục sự cố. Hướng dẫn chung này mà tôi cố gắng làm theo là cư xử như thể thứ tự quan trọng, và sau đó lưu ý đến điều đó, cố gắng giữ bộ nhớ hoạt động cần thiết của cơ sở dữ liệu để thực hiện truy vấn càng nhỏ càng tốt:bắt đầu với các bảng nhỏ hơn trước và sau đó tham gia vào các bảng lớn hơn; khi xem xét kích thước bảng, hãy tính đến các điều kiện trong mệnh đề WHERE phù hợp với một chỉ mục; thích các phép nối bên trong trước phần nối bên ngoài khi bạn có sự lựa chọn; liệt kê các điều kiện tham gia để ưu tiên các chỉ mục (đặc biệt là các khóa chính / cụm) trước tiên và các điều kiện khác trên tham gia thứ hai.