У меня есть набор таблиц с большими наборами строк (например, миллиарды строк), и мне нужно получить количество строк между двумя значениями параметров и установить два значения из результата;У меня COUNT(*)
в настоящее время.
Это будет выполнено несколько тысяч раз для одной и той же таблицы с различными значениями, переданными для сравнения как часть более крупного запроса, где изменяются входные параметры и количество строк в общей таблице изменяется на несколько сотен тысяч илидаже миллион строк по мере увеличения таблицы.
Может быть несколько (4-5) одинаковых запросов к одной и той же таблице одновременно, но с разными значениями параметров.Столбец сравниваемого значения индексируется и является одним первичным ключом в некоторых таблицах, но в других он может быть частью составного первичного ключа.Возвращаемое количество в большинстве случаев будет варьироваться от 500 000 до 1 000 000.
Существует ли более быстрый способ получения и использования значений счетчика из изменяющегося диапазона?
Важно, что это НЕ для всей таблицы, но для диапазона в таблице , поэтому такие вещи, как sp_spaceused
, невозможны.
SELECT
@newOUT = COUNT(*) ,
@RightValueOUT = COUNT(*)
FROM mydatabase.myschema.myidcolumn
WHERE
myidcolumn >= @MinRowValue
AND myidcolumn <= @MaxRowValue