From 10dc27b17c0139b453840581c93c3b813bd4a1a3 Mon Sep 17 00:00:00 2001 From: xywang Date: Mon, 21 Mar 2022 18:23:52 +0800 Subject: [PATCH] [TS-1318]: introduced binary search algorithm into tsdbSetReadTable --- src/tsdb/src/tsdbReadImpl.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/tsdb/src/tsdbReadImpl.c b/src/tsdb/src/tsdbReadImpl.c index f2678c627f..ea4064a72e 100644 --- a/src/tsdb/src/tsdbReadImpl.c +++ b/src/tsdb/src/tsdbReadImpl.c @@ -172,12 +172,9 @@ int tsdbSetReadTable(SReadH *pReadh, STable *pTable) { size_t size = taosArrayGetSize(pReadh->aBlkIdx); if (size > 0) { - while (true) { - if (pReadh->cidx >= size) { - pReadh->pBlkIdx = NULL; - break; - } - + size_t left = 0, right = size - 1; + while (left <= right) { + pReadh->cidx = (int)((left + right) / 2); SBlockIdx *pBlkIdx = taosArrayGet(pReadh->aBlkIdx, pReadh->cidx); if (pBlkIdx->tid == TABLE_TID(pTable)) { if (pBlkIdx->uid == TABLE_UID(pTable)) { @@ -185,15 +182,18 @@ int tsdbSetReadTable(SReadH *pReadh, STable *pTable) { } else { pReadh->pBlkIdx = NULL; } - pReadh->cidx++; - break; - } else if (pBlkIdx->tid > TABLE_TID(pTable)) { - pReadh->pBlkIdx = NULL; + break; + } else if (pBlkIdx->tid < TABLE_TID(pTable)) { + left = pReadh->cidx + 1; } else { - pReadh->cidx++; + right = pReadh->cidx - 1; } } + + if (left > right) { + pReadh->pBlkIdx = NULL; + } } else { pReadh->pBlkIdx = NULL; } -- GitLab