Мне нужно периодически обновлять локальный кеш с новыми дополнениями к некоторой таблице БД.Строки таблицы содержат поле с автоинкрементом порядковый номер (SN).Кэш также хранит это число, поэтому в основном мне просто нужно извлечь все строки с SN больше, чем у меня уже есть самое высокое.
SELECT * FROM table where SN > <max_cached_SN>
Однако большинство попыток не принесут данных (мне просто нужно убедиться, что у меня есть абсолютно актуальная локальная копия).Так что я хотел бы узнать, будет ли это более эффективным:
count = SELECT count(*) from table;
if (count > <cache_size>)
// fetch new rows as above
Я полагаю, что выбор по индексному числовому полю довольно эффективен, поэтому я берусь за использование count
.С другой стороны, этот тест / обновление будет выполняться довольно часто и многими клиентами, поэтому существует мотивация для его оптимизации.