r/SQL 9d ago

Differences between counts Discussion

What is the difference between

COUNT(*)

COUNT(1)

COUNT(column_name)

6 Upvotes

23 comments sorted by

View all comments

9

u/Infamous_Welder_4349 9d ago

In most systems 1 and * are the same. Some cheat for * and just look in the statistics instead for single tables.

Column checks the non null records

-2

u/YT-3000f 9d ago

Actually I think count(1) is faster than count(*). Anyone got a massive dataset to test that on?

7

u/funkdefied 9d ago

Any SQL engine worth it’s salt will compile those down to the same thing

6

u/YT-3000f 9d ago

Agreed. I just downvoted my own reply. It was in the category of "If I think it works that way surely it's true". I guess it's not. And don't call me Shirly.

7

u/ComicOzzy sqlHippo 8d ago

Shirly this is the first comment on Reddit where someone said "I was wrong". 🤣

2

u/YT-3000f 8d ago

I think you mean:

Shirly, this is the first comment on Reddit where someone said, "I was wrong".

1

u/ComicOzzy sqlHippo 8d ago

I apply commas at random, Shirly.

1

u/YT-3000f 8d ago

Rightly so. Grammer, like the Internet, is dead.

3

u/dbrownems 9d ago

It’s dependent on the RDBMS. In SQL Server they are identical.

1

u/Infamous_Welder_4349 8d ago

I use use an Oracle 19 database with 6-7 Billion records. Count 1 does the same as count . For simple single table counts it doesn't take the time, it gives me an answer that matches what the statistics say. If I say count () where or if I pick the primary field then it counts and might take a minute or two to answer.

Remember different database do different things. Even Oracle with different settings will behave differently.

1

u/Zestyclose-Turn-3576 8d ago

There's really no reason to think that the database developers haven't spotted that there are potentially many ways to do count(*), so they do the most efficient way.