Как проверить, содержит ли таблица строки или не sql server 2005?
Проверьте, содержит ли таблица строки или нет sql server 2005
Ответ 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**