检查一个表是否包含行sql server 2005

如何检查一个表是否包含行或不SQL Server 2005?

出于什么目的?

  • 最快的IF将是IF EXISTS (SELECT * FROM Table)...
  • 对于结果集, SELECT TOP 1 1 FROM Table返回零或一行
  • 对于具有计数(0或非零)的确切的一行, SELECT COUNT(*) FROM Table

另外,你可以使用存在

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

或者检查是否有特定logging的子行:

 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 

像其他人说,你可以使用类似的东西:

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

难道你不能只使用select count(*) from table (或索引列而不是*如果速度是重要的)计数行?

如果没有,那么也许这篇文章可以指出你在正确的方向。

为获得最佳性能,请使用特定列名称而不是* – 例如:

 SELECT TOP 1 <columnName> FROM <tableName> 

这是最佳的,因为不是返回整列列表,而是只返回一列。 这可以节省一些时间。

另外,如果有任何值,只返回第一行,使其更快。 实际上,只有一个值 – 如果有任何行,或者没有行,则没有值。

如果以分布的方式使用表(这很可能是这种情况),那么仅从服务器向客户端传输一个值的速度要快得多。

您也应该在所有列中明智地select从可以占用尽可能less资源的列中获取数据。