01/10/2018, 00:21

Phân biệt câu lệnh Join và Where trong SQL

Em đang học sql. Em thấy để kết nối các bảng với nhau thì dùng join. Tuy nhiên khi dùng where cũng có thể kết nối được các bảng lại với nhau.

  • Mọi người có thể phân biệt giúp e được không ạ
  • Dùng cái nào tốt hơn ạ.

Em cảm ơn

Nguyen Ca viết 02:23 ngày 01/10/2018

Thực ra là không khác biệt, nhanh hay chậm nó phụ thuộc vào bộ optimizer nó chọn join types là gì, join types có 3 kiểu: (hash, merge, loop), chú search về cái này thêm.
Bộ optimizer của mỗi hệ quản trị là khác nhau, và nó sẽ tự động chọn join type tối ưu nhất, đa số trường hợp nó tự động tối ưu được hết. một số trường hợp không được, mình ép nó theo kiểu mình muốn được.
Chú có thể chạy execution plan để biết bộ optimizer đang chọn kiểu join nào cho câu Sql của chú.

Son Nguyen viết 02:34 ngày 01/10/2018

Theo mình được học thì việc kết nói các bảng với nhau là dùng khóa chính khóa phụ, còn join với where dùng trong câu lệnh SELECT . bạn có thể nói rõ hơn về phân biệt trong trường hợp nào ko?

Quoc Thai Nguyen viết 02:22 ngày 01/10/2018

người hỏi và người trả lời chắc mới học sql, đơn giản là khi dùng where nối bảng thì sẽ có cột dữ liệu 2 bảng trùng nhau, còn join thì ko bị như v => tất nhiên ng ta sẽ dùng join mới tối ưu hóa truy vấn, ngoài ra còn left, right, full join,… tối ưu hơn nữa sẽ dùng điều kiện lồng

Nguyễn Việt Đức viết 02:26 ngày 01/10/2018

Join thì nó có nhiều loại Join mà thằng where thì nó tương tự như “inner join” nên 2 cái này dùng như nhau thôi bạn. Nhưng thường thì sài join do khi mình sài thằng design query nó hay build code là inner join.

Bài liên quan
0