你好,我有PHP + Mysql api,现在我正在改用asp.net核心+ dynamoDB api,在php中,我有5个mysql查询,它们全部使用不同的参数,现在我要进行相同的查询dynamoDB,但使用dynamoDb文档,它仅显示为单计数。
现在我可以创建五个查询并执行它们,但是我担心这会使它自身对api造成很大的重载(db包含超过1万行),是否有可能使count方法成为dynamodb,扫描和过滤器似乎最合逻辑使用它们的方式,但是它们返回整行,并且由于dynamoDb限制返回的数据仅为1mb,并且由于我只需要足以满足查询条件的数字,而不是整行数据。
$select = "(SELECT COUNT(User) FROM `userst` WHERE `User` != '' LIMIT 0,1) AS usercount,";
$select .= "(SELECT COUNT(User) FROM `userst` WHERE `Score` > '$PersonalRow[0]' LIMIT 0,1) AS score,";
$select .= "(SELECT COUNT(User) FROM `userst` WHERE `BookWidth` > '$PersonalRow[1]' AND `BookHeight` > '$PersonalRow[2]' AND `BookWeight` > '$PersonalRow[3]' LIMIT 0,1) AS Books,";
$select .= "(SELECT COUNT(User) FROM `userst` WHERE `HouseHeight` > '$PersonalRow[4]' AND `HouseWidht` > '$PersonalRow[5]' LIMIT 0,1) AS Houses,";
$select .= "(SELECT COUNT(User) FROM `userst` WHERE `Bandwidth` > '$PersonalRow[6]' AND `Speed` < '$PersonalRow[7]' AND `Bandwidth` > '$PersonalRow[8]' AND `CableSize` > '$PersonalRow[9]' LIMIT 0,1) AS Net,";
$select .= "(SELECT COUNT(User) FROM `userst` WHERE `BuildNumber` > '$PersonalRow[10]' LIMIT 0,1) AS Builds,";
$select .= "(SELECT COUNT(User) FROM `userst` WHERE `Density` > '$PersonalRow[11]' AND `Pressure` > '$PersonalRow[12]' AND `stage` > '$PersonalRow[13]' AND `Frequency` > '$PersonalRow[14]' LIMIT 0,1) AS Hybrids,";
$select .= "(SELECT COUNT(User) FROM `userst` WHERE `temperature` > '$PersonalRow[15]' LIMIT 0,1) AS heats";
mysqli_query($select)
这是我的php代码的样子
现在我的ASP网络代码如下:
public void Count()
{
UserTableItem UserTable = new UserTableItem();
List<ScanCondition> Conditions= new List<ScanCondition>
{
new ScanCondition(nameof(UserTable.Name), ScanOperator.NotEqual, string.Empty
};
List<UserTableItem> list = await Context.ScanAsync<UserTable>(Conditions).GetRemainingAsync();
Debug.WriteLine(list.Count);
}
我当前的代码显示了我将如何进行下一个查询,但是由于aws限制,此代码在达到1mb输出大小后将失败,我不需要行数据,我只需要满足查询条件的数字。谢谢。
编辑1:我读到aws dynamoDb支持hiveql,这意味着我可以获得与mysql相同的查询,但是我应该如何将hiveql集成到ASP网络核心中?