我正在尝试查询cosmosDB,该数据库想使用SQL的“ like”功能来搜索名字,为了不区分大小写,我正在使用cosmos DB的“ lower”功能。
例如SELECT * FROM c where contains(lower(c.lastName),“ abc”))//请求费用= 1660 +
我观察到此查询的请求费用约为1660+,但当我使用不带“包含”和“较低”功能的普通查询时,请求费用仅为'8'
例如SELECT * FROM c where c.lastName =“ abc” //请求费用= 8
请帮助您了解造成请求费用巨大差异的原因是什么?
答案 0 :(得分:0)
使用contains
进行的第一个查询实际上是在进行自由文本搜索,并且必须扫描所有文档。
第二个查询使用的是完全匹配匹配,因此将只使用索引并且花费更少。
除了实际查询路径的开销外,第一个查询的结果集可能比第二个查询大得多,因为第二个查询始终包含在第一个查询中,但第一个查询可以匹配更多内容,例如abcd,cabcd。
如果您要搜索许多文本列,那么值得考虑以下两个选项之一。
如果您要搜索整个单词,但列也不是太 很久之后,您可以将这些列标记化为匹配的字段
更强大的选择是查看在 与Cosmos DB结合使用