如果我的cosmos数据库有多个分区,是否有任何理由不将public function yajraDT()
{
$users = User::all();
return Datatables::of($users)
->addColumn('delete', function (User $users) {
return '<a href="admin/user/'.$users->id.'></a>';
})
->rawColumns(['delete'])
->make(true);
}
//ROUTE Start
Route::get('admin/user/delete/{id},'Users@destroy');
//ROUTE End
//Remove User
public function destroy($id){
try{
User::where('id',$id)->delete();
return back()->with([
'message' => 'User removed successfully."
]);
}catch(Exception $e){
return back()->with([
'message' => $e->getMesssage()
]);
}
}
设置为 true ?
我知道如果运行查询可能会遇到多个分区,则很有必要。但是,如果查询使用有效的分区键并且肯定只会命中一个分区,由于我将该标志设置为true,会导致性能损失或成本增加吗?
答案 0 :(得分:1)
但是,如果查询使用有效的分区键怎么办,肯定会 仅命中一个分区,是否有任何性能损失或提高 花费是因为我将该标志设置为true?
据我所知,您需要为分区集合设置分区键,即使您仍将EnableCrossPartitionQuery
设置为true,费用也不会改变。因为请求仅扫描您已经设置的特定分区。我做了一个样本测试,然后尝试验证它。
FeedOptions feedOptions = new FeedOptions();
PartitionKey partitionKey = new PartitionKey("A");
feedOptions.setPartitionKey(partitionKey);
feedOptions.setEnableCrossPartitionQuery(true);
FeedResponse<Document> queryResults = client.queryDocuments(
"/dbs/db/colls/part",
"SELECT * FROM c",
feedOptions);
System.out.println("Running SQL query...");
for (Document document : queryResults.getQueryIterable()) {
System.out.println(String.format("\tRead %s", document));
}
System.out.println(queryResults.getRequestCharge());
我认为也许您不必为这个问题而苦恼。仅当分区集合查询的作用域不限于单个分区键值时,才需要使用EnableCrossPartitionQuery
选项。如果您知道特定的分区键,则无需设置EnableCrossPartitionQuery
。