Как сделать подсчет SQL только до х числа? - PullRequest
0 голосов
/ 20 сентября 2019

Я хочу знать, имеет ли данный запрос более чем x элементов эффективным способом.Допустим, у меня есть запрос, который выводит 2 миллиарда строк, но я только хочу знать, если набор результатов больше 10 000, как бы я это сделал, если бы подсистема SQL не считала до 2 миллиардов?

Я пыталсяэто

SELECT 1 
WHERE EXISTS (SELECT COUNT(1) FROM mytable 
              WHERE somefilter = 58 
              HAVING COUNT(1) < 10000)

, но это кажется столь же медленным (или более), чем простой подсчет

SELECT COUNT(1) 
WHERE somefilter = 58

Это для SQL Server 2016.

Есть идеи?

1 Ответ

4 голосов
/ 20 сентября 2019

Вы можете сделать:

select 1
where (select count(*)
       from (select top (10000) 1
             from mytable 
             where somefilter = 58
            ) x
      ) < 10000

Самый внутренний подзапрос возвращает не более 10000 строк.Если их более 10000, запрос останавливается на первых 10000 и возвращает 10000.

Примечание. Если строк меньше, чем 10000, это не повлияет на производительность, поскольку необходимо будет сгенерировать все строки.Возможно, вам придется добавить индексы или разделы, чтобы реально улучшить производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...