1 số thắc mắc về sql
1 . khi chạy 1 câu query thì nếu ta dùng select * và select chính xác các cột cần lấy thì cái nào sẽ chạy nhanh hơn ?
2. càng nhiều đk where sẽ chạy nhanh hơn hay càng ít đk where sẽ chạy nhanh hơn
3. tự viết code để tìm bằng các thuật toán tìm kiếm ngay trong chương trình sẽ nhanh hơn hay chạy câu query để hệ quản trị tìm sẽ nhanh hơn
vd :
table :
đơnnghỉphép : id , id_employee , start , end
ngàylễ : id , name , date
giờ muốn đếm tổng số ngày lễ nằm giữa start -> end trong mỗi đơn nghỉ phép
c1 : ta sẽ chạy câu query để tìm ra từ start -> end có bao nhiêu ngày nghỉ lễ , cách này cứ mỗi record thì lại select lại >> chạy nhiều query
c2 : ta sẽ get ra tất cả ngày nghỉ lễ của năm đó ., sau đó sẽ dùng vòng lặp để tính start -> end có bao nhiêu ngày nghỉ lễ >> chạy ít query hơn vì ta sẽ tìm kiếm bằng code chứ ko select lại nữa
1/ Select chính xác cột cần lấy sẽ nhanh hơn, nếu được khai báo index sẽ càng nhanh hơn nữa.
2/ Việc xài nhiều where hay ít where tuỳ vào mức filter của bạn, chứ ko phải vì nhanh hay chậm mà xài nhiều hay ít
3/ Cần xác định rõ cái đơn nghỉ phép của bạn có nhiều records ko rồi mới tính tiếp đc.
Khi query nhiều coloumn sẽ tốn nhiều bộ nhớ và chậy chậm hơn.
Đặc biệt đối với 1 số CSDL hiện đại, khi sử dụng khi sử dụng “in-memory” trên columns, thì khi query trên những columns đó sẽ nhanh hơn đáng kể.
Ko liên qua với nhau lắm thì phải.
Về lý thuyết có nhiều điều kiện lọc hơn => nhiều phép so sánh hơn => chạy chộm hơn.
Tuy nhiên, thực tế nếu đặt nhiều “where” thích hợp trong các câu subqueries để làm giảm số records khi thực hiện các phép join/filter trong outer-queries, có thể giúp làm câu query chạy nhanh hơn.
Trừ khi bạn viết hay hơn các “cụ” sảm xuất ra csdl đó, ko thì nên học cách xài indexes + tối ưu câu queries sẽ tốt hơn.
VD: NHAN_VIEN (ID, ma_phongban, name): ID là khóa chính:
SELECT * FROM NHAN_VIEN WHERE ID = [ID nhân viên]
SELECT * FROM NHAN_VIEN WHERE ID = [ID nhân viên] AND ma_phongban = [Mã phòng ban]
P/S: không có câu trả lời chính xác cho câu này
ok thanks mấy anh…