Hello all,
Hôm nay cũng đi 1 ngày đàng lại tốn mấy chục ngàn tiền cơm, update dc kha khá vài thứ hay cho =)) Note lại ở đây nhé 😜
1/ SQL
Hôm nay mình có 1 problem trong khi build 1 page mới trong project (page cũ ra đời từ lâu rồi và nó nát quá, bị chê như shit 😂 ) nên mình dc cái task này.
Cụ thể là dùng dataTable show hết entities ra thay vì code cũ nó render bt, ko pagination, behavior cùi mía,…
Problem là cần merge 2 entities khác nhau, đặt là A và B. A có cách query lấy riêng, B có cách query lấy riêng (theo code người cũ).
Vậy nên hôm nay lần đầu xài UNION và UNION ALL các thím ạ 😘
- UNION: merge n query result lại với nhau, có distinct
- UNION ALL: merge n query result, ko có distinct và sẽ show cả duplicated result.
Về mặt query của ng` cũ thì đọc qua thấy rất ok, nhanh và lẹ, lấy đủ data cần thiết => Ko fải lo, copy nè.
A và B nó có điểm chung kha khá, và nhất là page mình làm thì điểm chung là 90% => Best Match, UNION là tốt nhất đỡ fải nghĩ nhiều nặng đầu.
Kết quả thành công tốt đẹp. Tuy nhiên lại gặp các problems nhỏ là:
- Ban đầu là mình để query A select 15 columns, query B select 14 columns => ko đủ với nhau => lỗi => fải select đủ số columns nếu ko UNION dc :v
- Sau đó mình để column tứ lung tung, kết quả vẫn ra nhưng nó bị lệch =))
- => Cần fải lưu ý SELECT cẩn thận và consistence giữa các query, trên select A,B,C thì dưới cũng fải A,B,C.
- Dùng Query Builder (DB Facade) của Laravel khi đã gán union thì chạy count là banh, vì problem đầu tiên kia :v Fải approach một cách count tốt hơn để pagination.
2/ DataTable
Một số notes nhỏ vui :v
- Để define 1 columns rỗng thì: {data:null, defaultContent: “”}
- var table_obj = $(“#table”).DataTable({…}); table_obj.draw(); => draw để reload lại table (gọi ajax, render lại,…)
- $(“#table”).DataTable({
….
initComplete: func_here, /// cái hook after rendered của datatable.
});
3/ MySQL
Rảnh rỗi đi tìm hiểu Master – Slave (Replication) và Cluster đọc các thím ạ, hay vãi. Đọc qua mới thấy core của MySQL khủng thật :v
Ngoài ra thì cũng đọc thêm về tutorials performance tuning – configuration cho phù hợp với nhu cầu và phần cứng :D. Điều này rất quan trọng cho các hệ thống medium – large vì nếu cài MySQL xong rùi để đó là nó sẽ xài minimal settings => chậm hay nghẽn là điều tất yếu.
4/ Kết luận
1 ngày dài rồi, nghỉ ngơi rồi quẩy CN thui 😀
Have a nice weekend guys.