Spring 06/07/2026 7 phút

Một giao diện rỗng cho bạn cả tầng truy vấn — và tên phương thức sai thì ứng dụng không lên

Repository như ra lệnh cho một trợ lý cực kỳ máy móc: bạn không chỉ CÁCH tìm, chỉ đặt TÊN cho thứ mình muốn theo một văn phạm chặt, và nó dịch cái tên đó ra SQL. Truy vấn dẫn xuất từ tên, projection, và chỗ tên phương thức không còn đáng dùng.

Cơ sở dữ liệu 04/11/2025 8 phút

Chỉ mục GIN tìm từ hiếm nhanh gấp 754 lần — nhưng tìm từ phổ biến còn chậm hơn cả không có chỉ mục

Đo trên 500.000 bài tiếng Việt: GIN nhanh 754 lần khi từ khoá hiếm, chậm hơn cả LIKE khi từ khoá phổ biến. Và cách xử lý ba chuyện riêng của tiếng Việt: không có bộ tách từ, tìm không dấu, và bẫy IMMUTABLE khi đánh chỉ mục unaccent.

Cơ sở dữ liệu 03/11/2025 7 phút

Kế hoạch ghi 'Index Only Scan' mà vẫn chạm bảng 29.976 lần — con số thật nằm ở chỗ khác

Chỉ mục phủ làm truy vấn nhanh 6,6 lần, nhưng có một điều kiện thứ hai gần như không ai nhắc: bản đồ trang khả kiến. Kế hoạch vẫn ghi Index Only Scan mà thời gian tăng gấp đôi — và con số cần nhìn là Heap Fetches, thứ chỉ hiện khi bạn chạy EXPLAIN ANALYZE.

Cơ sở dữ liệu 02/11/2025 8 phút

Bọc cột trong lower() làm truy vấn chậm 900 lần — và vì sao chỉ mục có sẵn không cứu được

Chỉ mục lưu giá trị nguyên của cột, nên hỏi về một hàm áp lên cột là mất chỉ mục và quét toàn bảng. Chỉ mục biểu thức chữa được, nhưng nó đòi khớp biểu thức chính xác tới từng ký tự và hàm phải IMMUTABLE — kèm cột sinh là lối thay thế dễ đọc hơn.

Cơ sở dữ liệu 01/11/2025 8 phút

Thêm một mệnh đề WHERE vào chỉ mục làm nó nhỏ đi 20 lần, đọc nhanh 2,9 lần và ghi nhanh 2,7 lần — cùng lúc

Phần lớn bảng nghiệp vụ đều lệch nặng: 95% đơn đã xong, 90% bản ghi đã xoá mềm. Chỉ mục một phần chỉ đánh chỉ mục đúng phần dữ liệu người ta thật sự truy vấn, và trên dữ liệu lệch nó thắng cả ba mặt cùng lúc — kèm ràng buộc unique có điều kiện và cái bẫy truy vấn quên vị từ.