All Tips & Questions

Tip of the day

Retrieve accurate row count for table

1 SELECT COUNT(*) FROM Table_Name Performs a full table scan. Slow on large tables.
2 SELECT CONVERT(bigint, rows) FROM sysindexes WHERE id = OBJECT_ID('Table_Name') AND indid < 2 Fast way to retrieve row count. Depends on statistics and is inaccurate. Run DBCC UPDATEUSAGE(Database) WITH COUNT_ROWS, which can take significant time for large tables.
3 SELECT CAST(p.rows AS float) FROM sys.tables AS tbl INNER JOIN sys.indexes AS idx ON idx.object_id = tbl.object_id and idx.index_id < 2 INNER JOIN sys.partitions AS p ON p.object_id=CAST(tbl.object_id AS int) AND p.index_id=idx.index_id WHERE ((tbl.name=N'Table_Name' AND SCHEMA_NAME(tbl.schema_id)='dbo')) The way the SQL management studio counts rows (look at table properties, storage, row count). Very fast, but still an approximate number of rows.
4 SELECT SUM (row_count) FROM sys.dm_db_partition_stats WHERE object_id=OBJECT_ID('Table_Name')    AND (index_id=0 or index_id=1); Quick (although not as fast as method 2) operation and equally important, reliable.

- by

Question of the day

What is the difference between select count(*) and count(1) in sql server?

There is no difference.

Select Count(*) from Table_Name
Select Count(1) from Table_Name

It is very common perception that the Count(1) perform better compared to Count(*), however it is not the case. If you test by looking at the execution plan, you will see same action being performed by both the commands and same number of rows being scanned. The time taken may be slightly different interms of CPU usage for count(*) , but is almost same as count(1).

Same IO, same plan, the works

- by


We are inviting Tips & Questions from you. Click Here to share your valuable Tips & Questions on this website.

  • Your Tips & Questions will be displayed on website, after validating the information you provided.
  • Tips & Questions will be refreshed on every day 12:00 AM IST.