Подтвердить что ты не робот

Проверьте, содержит ли таблица строки или нет sql server 2005

Как проверить, содержит ли таблица строки или не sql server 2005?

4b9b3361

Ответ 1

С какой целью?

  • Самый быстрый для IF будет IF EXISTS (SELECT * FROM Table)...
  • Для набора результатов SELECT TOP 1 1 FROM Table возвращает либо ноль, либо одну строку
  • Для ровно одной строки со счетом (0 или ненулевым), SELECT COUNT(*) FROM Table

Ответ 2

Кроме того, вы можете использовать

select case when exists (select 1 from table) 
          then 'contains rows' 
          else 'doesnt contain rows' 
       end

или проверить наличие дочерних строк для определенной записи:

select * from Table t1
where exists(
select 1 from ChildTable t2
where t1.id = t2.parentid)

или в процедуре

if exists(select 1 from table)
begin
 -- do stuff
end

Ответ 3

Как сказал Другой, вы можете использовать что-то подобное:

IF NOT EXISTS (SELECT 1 FROM Table)
  BEGIN 
    --Do Something
  END 
ELSE
  BEGIN
    --Do Another Thing
  END

Ответ 4

Не можете ли вы просто подсчитать строки, используя select count(*) from table (или индексированный столбец вместо *, если скорость важна)?

Если нет, то эта статья может указывать вам в правильном направлении.

Ответ 5

ДЛЯ наилучшей производительности используйте имя конкретного столбца вместо * - например:

SELECT TOP 1 <columnName> 
FROM <tableName> 

Это оптимально, потому что вместо того, чтобы возвращать весь список столбцов, он возвращает только один. Это может сэкономить некоторое время.

Кроме того, возвращая только первую строку, если есть какие-либо значения, делает ее еще быстрее. Фактически вы получили только одно значение в результате - если есть какие-либо строки или нет значения, если нет строк.

Если вы используете таблицу распределенным образом, что, скорее всего, имеет место, то перенос только одного значения с сервера на клиента происходит намного быстрее.

Вы также должны выбирать разумно среди всех столбцов для получения данных из столбца, который может принимать как можно меньше ресурсов.

Ответ 6

Быстро:

SELECT TOP (1) CASE 
        WHEN **NOT_NULL_COLUMN** IS NULL
            THEN 'empty table'
        ELSE 'not empty table'
        END AS info
FROM **TABLE_NAME**