我一直在阅读关于“COUNT(*) without where 子句”在 PostgreSQL 中速度非常慢的文章。并且来自 MySQL,我不知道我是否能够在不再使用它的情况下生活。我还读到即使您添加了“where”子句,它也必须从结果中扫描每一行,除非您的结果很少,否则这会很慢。我看到有使用触发器和额外表的疯狂黑客,但我不喜欢它的外观。我的意思是我是这个 RDBMS 的新手,刚开始使用基本功能,并且已经不得不使用变通方法?
我需要做的一个例子是创建一个防洪机制。类似的东西if "count(id) where ip = 1.2.3.4" > 100, fail instead of insert
。
所以我的问题是:
- 这仍然是一个未解决的问题吗?
- 如果我改用 COUNT(id) 或添加一些像 DISTINCT 这样的子句,会有什么不同吗?
- PostgreSQL 用户如何在不计数的情况下生存?