检查一个表是否包含行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资源的列中获取数据。