- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 ignite C++ API,我试图找到一种方法来执行 SqlFieldsQuery 以选择特定字段,但我想对一组键执行此操作。
一种方法是像这样执行 SqlFieldsQuery,
SqlFieldsQuery("select field from Table where _key in (" + keys_string + ")")
哪里keys_string
是以逗号分隔的字符串形式的键列表。
不幸的是,与只做 cache.GetAll(keys)
相比,这需要很长时间对于键集,keys
.
是否有另一种更快的方法从 ignite 缓存中获取一组 key 的特定字段?
编辑:
阅读答案后,我尝试将查询更改为:
auto query = SqlFieldsQuery("select field from Table t join table(_key bigint = ?) i on t._key = i._key")
然后我从我的一组键中添加参数,如下所示:
for(const auto& key: keys) query.AddArgument(key);
但是在运行查询时,出现错误:
Failed to bind parameter [idx=2, obj=159957, stmt=prep0: select field from Table t join table(_key bigint = ?) i on t._key = i._key {1: 159956}]
显然,这行不通,因为只有一个 '?'。
然后我尝试传递一个 vector<int64_t>
的键,但我得到一个错误,基本上说 std::vector<int64_t>
没有专门点燃BinaryType
.所以我按照定义做了这件事 here .打电话时,例如
writer.WriteInt64Array("data", data.data(), data.size())
我给这个字段起了一个任意的名字“数据”。这会导致错误:
Failed to run map query remotely.
不幸的是,C++ API 的文档既不完善也不完整,所以我想知道我是否遗漏了什么,或者 API 不允许将数组作为参数传递给 SqlFieldsQuery
.
最佳答案
使用 IN
子句的查询并不总是正确使用索引。此处描述了解决方法:https://apacheignite.readme.io/docs/sql-performance-and-debugging#sql-performance-and-usability-considerations
此外,如果您可以选择 GetAll
并直接按键查找,那么您应该使用它。无论如何,它可能会更有效。
关于c++ - 点燃 SqlFieldsQuery 特定键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45640331/
使用 ignite C++ API,我试图找到一种方法来执行 SqlFieldsQuery 以选择特定字段,但我想对一组键执行此操作。 一种方法是像这样执行 SqlFieldsQuery, SqlFi
似乎是 SqlFieldsQuery 导致了内存泄漏。我正在尝试测试 Ignite.destroyCache 方法以确保在此方法之后清除所有缓存资源。但是似乎当我们使用 SqlFieldsQuery
有什么方法可以在二进制对象的 apache ignite 上运行 sql 字段查询(无需定义 java 类)? 我想执行这样的操作: CacheConfiguration cfg = new
我使用 SqlFieldsQuery 来缓存 ~1_000_000 行。 QueryCursor> cursor = cache.query(new SqlFieldsQuery("select nu
我是一名优秀的程序员,十分优秀!