Bỏ qua, tới nội dung chính
Cà Phê & Code Cà Phê & Code
  • Trang chủ
  • Chuyên mục
    • Backend
    • Bảo mật
    • Bảo mật ứng dụng web
    • Cơ sở dữ liệu
    • DevOps
    • Docker
    • Giải thuật
    • Go
    • Hệ điều hành
    • Java
    • Linux
    • Mang
    • Mạng
    • Message Queue
    • Odoo
    • RabbitMQ
    • Spring
    • Trình biên dịch
    • Vert.x

    • Tất cả chuyên mục
  • Sê-ri
  • Thẻ
  • Luyện thi
  • Ghi chú
  • Giới thiệu
  • Liên hệ
Đăng nhập
  1. Trang chủ
  2. Thẻ
  3. sql

#sql

194 bài viết
Cơ sở dữ liệu 22/09/2026 4 phút

Cùng một index nhiều cột, đổi cột nào đứng đầu WHERE: 0,033 ms hay 109 ms — quy tắc cột trái nhất

Index nhiều cột không phải cứ liệt kê các cột là dùng được cho mọi truy vấn. Thứ tự cột quyết định. Hiểu quy tắc cột trái nhất qua danh bạ điện thoại, và đo thật chênh lệch 3.300 lần.

#hieu-nang#index#database#sql#toi-uu#postgresql
3
Cơ sở dữ liệu 22/09/2026 5 phút

Heap Fetches: 0 — khi PostgreSQL trả kết quả mà không thèm mở bảng: index-only scan và INCLUDE

Index thường tìm xong vẫn phải đọc heap để lấy các cột khác. Covering index dùng INCLUDE nhét sẵn cột vào index, cho index-only scan bỏ hẳn bước đọc bảng. Đo thật cost giảm 95 lần, kèm điều kiện VACUUM.

#hieu-nang#index#database#sql#toi-uu#postgresql
3
Cơ sở dữ liệu 22/09/2026 4 phút

97% dữ liệu không bao giờ tra tới, sao lại index nó? Partial index nhỏ hơn 13 lần cho đúng phần bạn cần

Nếu bạn chỉ hay truy vấn một phần dữ liệu (đơn chờ xử lý, tài khoản active), index cả bảng là lãng phí. Partial index chỉ đánh những dòng thỏa điều kiện, nhỏ hơn nhiều và ghi nhẹ hơn. Đo thật 34 MB vs 2,6 MB.

#hieu-nang#index#database#sql#toi-uu#postgresql
3
Cơ sở dữ liệu 22/09/2026 4 phút

WHERE lower(email) = ... chậm 320ms dù đã có index trên email: vì sao, và expression index cứu thế nào

Bọc một hàm quanh cột trong WHERE là làm mất index thường — PostgreSQL phải tính hàm cho từng dòng. Expression index đánh index trên chính biểu thức đó. Đo thật 320ms xuống 0,018ms.

#hieu-nang#index#database#sql#toi-uu#postgresql
3
Cơ sở dữ liệu 22/09/2026 6 phút

Ràng buộc duy nhất trong PostgreSQL: một index B-tree đứng sau, và cái bẫy NULL ai cũng vấp

UNIQUE constraint và CREATE UNIQUE INDEX khác nhau ở đâu, vì sao ràng buộc duy nhất vừa cưỡng chế vừa tăng tốc đọc, và tại sao một cột UNIQUE vẫn cho nhiều dòng NULL — đo thật trên PostgreSQL 16 với lỗi duplicate key nguyên văn.

#hieu-nang#index#database#sql#toi-uu#postgresql
2
Cơ sở dữ liệu 22/09/2026 6 phút

Bitmap scan trong PostgreSQL: khi planner gộp hai index cho một truy vấn

BitmapAnd và BitmapOr cho phép PostgreSQL dùng nhiều index cùng lúc trên một bảng. Xem cách nó biến hai index kém chọn lọc thành một truy vấn nhanh, vì sao phải qua bitmap thay vì index scan thẳng, và đọc Recheck Cond — đo thật trên PostgreSQL 16.

#hieu-nang#index#database#sql#toi-uu#postgresql
2
  • 1
  • 2
  • 3
  • 4
  • 5
  • …
  • 33

Trang 3 / 33 — tổng 194 bài viết

Tìm kiếm
Admin

Nhấp một ngụm cà phê, viết thêm một dòng code

Xem thêm
Chuyên mục
  • Odoo 400
  • Giải thuật 270
  • Cơ sở dữ liệu 237
  • DevOps 102
  • Java 100
  • Hệ điều hành 90
  • Docker 68
  • Spring 60
  • Go 60
  • Linux 54
  • Vert.x 50
  • Mạng 45
  • Trình biên dịch 45
  • Message Queue 40
  • Backend 40
  • RabbitMQ 40
  • Bảo mật 39
  • Bảo mật ứng dụng web 1
Xem nhiều nhất
Bốn mươi dòng kiểm trước khi bấm nút triển khai — mỗi dòng đến từ một lần đã hỏng 10/08/2026 · 121
900 lần chạy test không bắt được lỗi luôn nằm đó — thêm một dòng sleep, nó lộ ra 100% 05/08/2026 · 107
Cùng một jar, ảnh Docker từ 866 MB xuống 126 MB — và cái bẫy làm ảnh nhỏ nhất in tiếng Việt ra dấu hỏi 06/08/2026 · 88
Integer 127 == 127 cho true, nhưng 128 == 128 cho false — vì sao, và bẫy đó ẩn ở đâu 05/05/2026 · 67
Một dòng println nở ra sáu lệnh, dấu cộng nối chuỗi biến thành invokedynamic — mở file .class ra xem 04/05/2026 · 62
Thẻ phổ biến
#zero-to-hero#do-dac#odoo#odoo-19#hieu-nang#developer#lap-trinh#devops#postgresql#sql#java#huong-dan#he-dieu-hanh#database#toi-uu#100-ngay-java#trinh-bien-dich#bao-mat#docker#dong-thoi#container#csdl#docker-compose#spring#go#golang#kubernetes#linux#giam-sat#mang#vertx#cau-truc-du-lieu#co-so-du-lieu#giai-thuat#kien-truc-may-tinh#quan-sat#kafka#message-queue#redis#rabbitmq#orm#web#van-hanh#view#ke-toan#owl#index#microservice#reactive#kho#qweb#website#kien-truc#crm#collections#nhan-su#thiet-ke#ban-hang#controller#do-tin-cay#gioi-thieu#bao-cao#cau-hinh#mua-hang#ecommerce#jvm#report#spring-boot#jpa#monitoring#san-xuat#stream#action#spring-security#test#bloat#du-an#http#oop#planner#tong-ket#context#event-bus#explain#jmh#module#mrp#phan-quyen#ton-kho#vacuum#amqp#bo-nho#email#exchange#io#join#kanban#lien-he#luong-ao#phan-vung#spring-amqp#thanh-toan#bat-dong-bo#concurrency#cong-cu#error#form#functional#go-loi#interface#json#logging#network#routing#spring-mvc#testing#wizard#api#assets#bytecode#chan-doan#chatter#cong-no#connection-pooling#consumer#debug#domain#generics#list#replication#san-pham#scss#statistics#trien-khai#tu-dong-hoa#widget#automation#bat-bien#bom#build#cache#chat-luong#deploy#dich-vu-khach-hang#dlx#erp#event-loop#exception#frontend#gc#group-by#helpdesk#hoa-don#hot-update#inheritance#jackson#javascript#jdbc#kieu-du-lieu#lambda#lo-trinh#luu-tru#maven#migration#nha-cung-cap#phe-duyet#portal#quan-ly-cong-viec#rang-buoc#retry#server-action#snippet#testcontainers#tim-kiem#tracing#tuy-bien#vertx-web#wal#work-mem#xpath#activity#analyze#bao-gia#bao-tri#barcode#batch#bat-dau#bien-the#button#cham-cong#channel#chi-phi#chuan-hoa#cluster#collectors#copy#crud#csrf#da-cong-ty#deadlock#default#delete#dich-thuat#dinh-gia-ton-kho#field-widget#fillfactor#future#giao-dich#giao-dien#giao-hang#ha#hikaricp#hoat-dong#hop-dong#i18n#ir-cron#java-time#jdk#jfr#jit#jsonb#junit#jwt#ke-thua#ket-noi#khoa#lead#log#luong#many2one#menu#model#nap-du-lieu#ngan-hang#nghi-phep#nhap-du-lieu#optional#owasp#parallel#partitioning#pattern-matching#phan-tich#phan-trang#pipeline#prefetch#python#queue#quorum-queue#record#recordset#rest#sap-xep#sealed#search#seo#theme#thue#tich-hop#timeout#timezone#tls#toast#transaction#transientmodel#trigram#tuyen-dung#unicode#upload#websocket#xay-dung-web#xml#abstract-model#ack#active-ids#actuator#addons#aggregate#alignment#analytic#approvals#assert#async#at-least-once#atomic#attachment#attendances#auth#autoboxing#automated-action#autovacuum#backpressure#backup#bang-dieu-khien#bang-gia#ban-hang-online#bao-cao-tai-chinh#bigdecimal#binding#blockingqueue#blog#brin#budget#bulk-load#but-toan#cache-hit-ratio#calendar#ca-nhan-hoa#canh-bao#cas#cham-gio#chart-of-accounts#chat#checklist#checkpoint#chung-chi#circuit-breaker#classloader#classpath#client-action#codec#command#comparator#completablefuture#component#compose#composite#computed#concurrenthashmap#config#cong-doan#cong-tac#constructor#cors#cot-moc#criteria#cron#csp#css#cte#da-hinh#da-ngon-ngu#danh-gia#danh-so#dashboard#datetime#ddl#default-method#delegation#demo-data#deque#developer-mode#dev-mode#devtools#dia-chi#dialog#dieu-chuyen#dieu-khien#dieu-kien#dinh-kem#discuss#display-name#distinct#doi-chieu#doi-sales#doi-soat#do-luong#don-hang#don-mua#don-vi-tinh#do-tre#download#dto#du-bao#editor#effective-cache-size#effective-io-concurrency#email-marketing#employees#encapsulation#encoding#env#ep-kieu#equals#error-boundary#error-handling#etcd#event#executor#exists#fanout#federation#field#filestore#flaky#flatmap#flyway#forkjoin#form-view#full-page-writes#full-text#full-text-search#getter#get-view#gia#giay-bao-co#gin#gist#git#gitops#gop-du-lieu#graalvm#gradle#graph#grep#group#groups#gtgt#handle#hang-doi#hash#hashcode#hashmap#hazelcast#headers#helm#help#hibernate#hoa-don-dien-tu#hoan-tien#hook#hooks#hoot#html#https#huge-pages#idempotency#inherit#inherits#inner-class#invoicing#ir-attachment#ir-sequence#isolation-level#iterator#javac#javap#jlink#jmm#journal#jsonrpc#jstack#keyset#khach-hang#khau-hao#khoa-chinh#khoa-ngoai#khoa-so#khuyen-mai#kiem-ke#kiem-soat#kien-hang#kiosk#knowledge#ky-dien-tu#ky-nang#ky-online#lag#lateral#lazy-load#lazy-queue#like#list-view#lock-date#logical#lo-serial#mail#mail-activity#mail-mail#mail-template#mail-thread#maintenance#maintenance-work-mem#management#many2many#map#materialize#mat-khau#mau-bao-gia#mau-email#ma-vach#max-connections#media#memcached#memory-leak#merge-join#message#message-post#method#mixin#mockito#moi-truong#monetary#mvcc#name-search#nang-cap#native-image#ngan-sach#nginx#nguoi-dung#nhan-hang#nhap-kho#nhat-ky#nhieu-buoc#nio#no-co#notification#n-plus-1#numeric#oauth2#observability#oca#oidc#onchange#on-conflict#one2many#openssl#or#order#outbox#package#padding#pagination#paperformat#partition-management#partition-pruning#partition-wise-join#patch#pdb#pdf#pecs#pgbadger#pgbench#pgbouncer#pg-locks#pg-repack#pg-stat-statements#pgstattuple#pg-trgm#phan-bo#phan-tan#phong-ban#phu-thuoc#pivot#plan-cache#poison-message#port#pprof#prepared-statement#producer#prometheus#promise#properties#props#publisher-confirms#pubsub#pylint#qos#qrcode#quality#quan-he#quyen#quy-trinh#random-page-cost#recruitment#redelivery#reference#regex#registry#reindex#related#replica#requests#res-company#resource#restclient#rfq#route#router#routes-rules#rpc#safe-eval#sao-ke#sao-luu#sargable#scaffold#scaling#scheduled#scheduled-action#sdkman#select#selection#separator#serialization#service-discovery#servlet#session#set#sharding#shared-buffers#shell#shovel#sign#sitemap#skip-locked#sla#slf4j#slice#slots#smart-button#so-cai#sockjs#so-do-to-chuc#solid#sort#source-code#spring-data#ssd#sse#statusbar#streaming#string#struct#structured-concurrency#studio#subquery#sudo#su-kien#switch#sync#synchronized#systray#tagged#tai-dat-hang#tai-khoan#tai-san#t-call#template#text#t-field#t-foreach#thao-tac-hang-loat#the-phan-loai#thiet-ke-api#thiet-lap#thread#threadlocal#thread-pool#thuc-hanh#thue-gtgt#thymeleaf#tieng-viet#tien-te#time#time-off#tinh-phi#toan-tu#to-khai#topic#topology#tour#transactioncase#transient-model#tra-truoc#treemap#tri-thuc#truncate#ttl#tuning#tuyen-duong#ty-gia#type-erasure#ung-dung#union#unlink#unlogged#update#upsert#useref#useservice#usestate#uuid#ux#vacuum-full#validation#varargs#verticle#vhost#viet-nam#viettel#visibility-map#volatile#wait-events#wal-compression#web-client#webclient#webhook#werkzeug#window-function#worker#workers#wraparound#write#xac-thuc-hai-lop#xml-id#xmlrpc#xuat-du-lieu#xuat-kho
Lưu trữ
  • Tháng 9/2026 1214
  • Tháng 8/2026 197
  • Tháng 7/2026 114
  • Tháng 6/2026 64
  • Tháng 5/2026 30
  • Tháng 11/2025 4
  • Tháng 10/2025 27
  • Tháng 9/2025 30
  • Tháng 8/2025 31
  • Tháng 7/2025 30
Theo dõi blog

Nhận email mỗi khi có bài viết mới. Không quảng cáo, huỷ bất cứ lúc nào.

Hoặc dùng RSS
Cà Phê & Code Cà Phê & Code

Cà Phê & Code là blog dành cho những người yêu công nghệ và lập trình. Nơi chia sẻ kiến thức coding, công cụ hữu ích, xu hướng công nghệ, kinh nghiệm phát triển phần mềm và những câu chuyện phía sau màn hình — tất cả được kể theo cách gần gũi, dễ hiểu, như một cuộc trò chuyện bên tách cà phê.

Liên kết
  • Trang chủ
  • Chuyên mục
  • Thẻ
  • Giới thiệu
  • Liên hệ
Chuyên mục nổi bật
Odoo (400)Giải thuật (270)Cơ sở dữ liệu (237)DevOps (102)Java (100)Hệ điều hành (90)Docker (68)Spring (60)Go (60)Linux (54)Vert.x (50)Mạng (45)Trình biên dịch (45)Message Queue (40)Backend (40)RabbitMQ (40)Bảo mật (39)Bảo mật ứng dụng web (1)

© 2026 Cà Phê & Code. Bảo lưu mọi quyền.