top | item 16880904

(no title)

rogerdpack | 7 years ago

I've had count(*) queries take like literally days in Postgres. Want to insert a lot of data? Expect it to cost a lot of RAM. It's got high features but some really rough edges too :|

discuss

order

zht|7 years ago

the same would happen in MySQL right? select count(*) does a table scan

beberlei|7 years ago

Depends on the storage engine afair, but both innodb an myisam have either index or global metadata based solution for this. I think in myisam its an estimste if you use count(*) so you need to use count(id) to get an exact value. This is all well documented

mfjordvald|7 years ago

count(*) doesn't do full table scan as it's not tied to specific data. It has special handling logic. The only case where it might have to do a full table scan is if you try to count() on a specific (nullable?) column without an index.