Mar*_*rkR 13
通常,执行表扫描或索引扫描.这主要是因为在支持MVCC的引擎中,不同的事务可能会看到不同的行,因此没有单个"行计数"同时适用于所有人.
同样,如果您有WHERE子句,那么不同客户端的where条件可能不同,因此它们会看到不同的数字.
如果需要对大表进行大量计数,请考虑将自己的计数器存储在不同的表中.具体如何执行此操作完全取决于应用程序.
这在很大程度上取决于您使用的SQL实现(MS SQL Server,MySQL,Oracle,PostgreSQL等),以及它的优化程序有多聪明.
它也可能取决于查询.例如,有类似的东西
SELECT COUNT(primary_key) FROM table;
Run Code Online (Sandbox Code Playgroud)
优化器可能会意识到不需要扫描表(因为没有过滤,WHERE
并且没有任何值为NULL的可能性)并且只返回表的大小.使用更复杂的查询(存在过滤或NULL的可能性),数据库可能必须扫描表,或者它可能能够使用索引进行一些优化.
归档时间: |
|
查看次数: |
7610 次 |
最近记录: |