Всем привет! Имеется блок в скрипте, который в упрощенном виде выглядит так:

Суть: скрипт ждет, пока в БД не появится нужное значение. Если появилось - выходим из цикла и продолжаем скрипт, если не появилось за 10 сек - выходим из цикла и продолжаем скрипт.
Проблема: раньше у меня там стояло [[CYCLE_INDEX]]<10 и сон 1 сек, все работало корректно. Но так как в моем случае реакция 1 сек слишком медленная, было сделано [[CYCLE_INDEX]]<100 и сон 100 мс. Что привело к тому, что этот цикл теперь задерживается не на 10 сек, а на 10-25 сек. У меня 50 потоков, которые почти постоянно висят в этом цикле, и я связываю это с нагрузкой на БД (50 запросов каждые 100 мс).
Вопрос: как можно оптимизировать данный участок кода? Чтобы и быстро реагировать на появление в БД нужного значения, и выжидать ровно 10 сек? Можно ли сделать в BAS колбэк, чтобы не постоянно опрашивать БД, а наоборот чтобы БД сама сообщала, когда в ней появилось нужное значение?