diff --git a/internal/core/src/segcore/SegmentGrowingImpl.cpp b/internal/core/src/segcore/SegmentGrowingImpl.cpp index c584c6ca2f..7094f90e6f 100644 --- a/internal/core/src/segcore/SegmentGrowingImpl.cpp +++ b/internal/core/src/segcore/SegmentGrowingImpl.cpp @@ -513,7 +513,8 @@ SegmentGrowingImpl::search_ids(const IdArray& id_array, auto res_id_arr = std::make_unique(); std::vector res_offsets; - for (auto pk : pks) { + res_offsets.reserve(pks.size()); + for (auto& pk : pks) { auto segOffsets = insert_record_.search_pk(pk, timestamp); for (auto offset : segOffsets) { switch (data_type) { @@ -524,7 +525,7 @@ SegmentGrowingImpl::search_ids(const IdArray& id_array, } case DataType::VARCHAR: { res_id_arr->mutable_str_id()->add_data( - std::get(pk)); + std::get(std::move(pk))); break; } default: { diff --git a/internal/core/src/segcore/SegmentSealedImpl.cpp b/internal/core/src/segcore/SegmentSealedImpl.cpp index b5baa6a5b8..b4aa974a11 100644 --- a/internal/core/src/segcore/SegmentSealedImpl.cpp +++ b/internal/core/src/segcore/SegmentSealedImpl.cpp @@ -956,7 +956,8 @@ SegmentSealedImpl::search_ids(const IdArray& id_array, auto res_id_arr = std::make_unique(); std::vector res_offsets; - for (auto pk : pks) { + res_offsets.reserve(pks.size()); + for (auto& pk : pks) { auto segOffsets = insert_record_.search_pk(pk, timestamp); for (auto offset : segOffsets) { switch (data_type) { @@ -967,7 +968,7 @@ SegmentSealedImpl::search_ids(const IdArray& id_array, } case DataType::VARCHAR: { res_id_arr->mutable_str_id()->add_data( - std::get(pk)); + std::get(std::move(pk))); break; } default: {