加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在O(1)中计算SQL表中的行

发布时间:2020-12-12 08:41:37 所属栏目:MsSql教程 来源:网络整理
导读:我理解计算SQL表中行数的最好方法是count(*)(或等价于count(PrimaryKey)). 这是O(1)吗? 如果没有,为什么不呢? 为什么不只是实现一个计数器并返回给这个具体的查询?是因为这个查询不是常见的用例吗? 如果答案根据SQL引擎有所不同,我想听听差异 – 但是无论
我理解计算SQL表中行数的最好方法是count(*)(或等价于count(PrimaryKey)).

这是O(1)吗?
>如果没有,为什么不呢?

为什么不只是实现一个计数器并返回给这个具体的查询?是因为这个查询不是常见的用例吗?

如果答案根据SQL引擎有所不同,我想听听差异 – 但是无论如何,我对生产SQL引擎中的实际实现感兴趣.

解决方法

在一些RDBM中,这是O(1)(最值得注意的是 MySQL),把AFAIK一般都是皱眉而且被认为是“丑陋的表演黑客”.原因是如果您有事务(每个真正的RDBM都应该有),则表中的总行数可能与或可能不等于从当前事务中可以看到的总数.这就是为什么服务器需要检查哪些行实际上对您的事务可见,使得O(n)比O(1)更多.

如果要优化获取行数并满足近似结果的过程,则大多数RDBM具有特殊的“信息”表,其中包含有关表的信息,包括大致的行数(同样,它不是确切的由于事务的行数).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读