ผมเห็นในเอกสารความแตกต่างระหว่างและcount(*)
count(pk)
ผมเคยใช้count(pk)
(ที่pk
เป็นSERIAL PRIMARY KEY
) count(*)
ไม่ทราบว่าเกี่ยวกับการดำรงอยู่ของ
คำถามของฉันเกี่ยวกับการเพิ่มประสิทธิภาพภายในของ Postgres มันฉลาดพอที่จะรับได้หรือไม่ว่าSERIAL PRIMARY KEY
จะมีอยู่ในทุกแถวและไม่ผิดและนับจำนวนแถวหรือจะตรวจสอบคำกริยาซ้ำซ้อนสำหรับแต่ละแถวหรือไม่ ฉันยอมรับว่านี่อาจเป็นการเพิ่มประสิทธิภาพที่ไม่มีจุดหมายมากเกินไป แต่ฉันแค่อยากรู้
ผมเอามาดูที่การส่งออกของได้EXPLAIN
และEXPLAIN VERBOSE
สำหรับcount(*)
, count(id)
และcount(id > 50)
เพื่อดูว่าEXPLAIN
กล่าวถึงการตรวจสอบภาคในการส่งออกของตน มันไม่ได้