Select 带有计数(*)的DataStax DevCenter问题

Select 带有计数(*)的DataStax DevCenter问题,select,count,limit,datastax,Select,Count,Limit,Datastax,我们使用的是DevCenter 1.2.0,从DataStax网站上看,1.2.1似乎没有提到以下内容 DevCenter 1.2.0强制对“选择…”查询进行隐式限制,允许值最多为1000,并且不能为空。限制框中的限制值可以由显式限制子句覆盖 这在运行“标准”查询时可以正常工作,但无法为select count()查询获得有效结果。这是因为在Cassandra中,LIMIT子句应用于源而不是结果(与SQL btw不同)。因此,如果在DevCenter中执行“从my_table中选择count()

我们使用的是DevCenter 1.2.0,从DataStax网站上看,1.2.1似乎没有提到以下内容

DevCenter 1.2.0强制对“选择…”查询进行隐式限制,允许值最多为1000,并且不能为空。限制框中的限制值可以由显式限制子句覆盖

这在运行“标准”查询时可以正常工作,但无法为select count()查询获得有效结果。这是因为在Cassandra中,LIMIT子句应用于源而不是结果(与SQL btw不同)。因此,如果在DevCenter中执行“从my_table中选择count()”,如果当前限制为100,则会得到100;如果当前限制为200,则会得到200,依此类推。恐怕没什么用

如果您通过执行“从我的\u表限制10000000000中选择计数(*)来覆盖限制,则您将获得一个超时


删除DevCenter中“选择计数”查询的隐式限制是否有意义?

这不是DevCenter的问题。有些事情你应该考虑

  • 您将获得有限制或无限制的超时,因为它必须对您的表进行完整扫描。因为查询没有“WHERE”子句。因此,有“10000000000”限制或没有限制与超时差不多
  • 如果需要频繁查询以了解所有行的数量。此查询不应该是您的首选项。例如,考虑使用任何其他带有计数器类型的表。<李>
  • “select count(*)读取的行数与“select*”读取的行数相同,所以为什么只从count中删除限制是没有帮助的
  • 限制并非毫无用处。想象一下,您只需要数百万行中的10行结果样本

在我看来,你应该考虑增加超时时间,或者使用任何CasDANRA驱动程序制作一个小程序来为你做这些计算。或者考虑蜂巢或改变你的模型,如果你打算使用这个查询太多。 DevCenter 1.6.0版不再在选择语句中添加隐式限制子句(只要您连接到Cassandra 2.0或更高版本)。

我没有,但我不明白这可能会如何影响限制子句。我不得不说,这是一个非常无用的答案。选择计数(*)是您在开发环境中经常要做的事情。在开发环境中,您没有太多的数据,也没有超时。这个答案是为了证明为什么CQL有limit子句。@Zain Malik:我在Dev中有一百万行超时。如果devcenter提供了可配置的超时,这不会是一个问题。使用新版本1.6更改/修复了查询对我的工作方式。谢谢