todas - Compruebe si una tabla contiene filas o no sql server 2005
tamaño de base de datos sql server (6)
¿Con qué propósito?
- Lo más rápido para un IF sería
IF EXISTS (SELECT * FROM Table)...
- Para un conjunto de resultados,
SELECT TOP 1 1 FROM Table
devuelve cero o una fila - Para exactamente una fila con un recuento (0 o no cero),
SELECT COUNT(*) FROM Table
¿Cómo comprobar si una tabla contiene filas o no sql server 2005?
¿No puede simplemente contar las filas utilizando el select count(*) from table
(o una columna indexada en lugar de * si la velocidad es importante)?
Si no es así, tal vez este artículo puede apuntarle en la dirección correcta.
Además, usted puede utilizar exists
select case when exists (select 1 from table)
then ''contains rows''
else ''doesnt contain rows''
end
o para verificar si hay filas secundarias para un registro en particular:
select * from Table t1
where exists(
select 1 from ChildTable t2
where t1.id = t2.parentid)
o en un procedimiento
if exists(select 1 from table)
begin
-- do stuff
end
Como dijo Otro, puedes usar algo así:
IF NOT EXISTS (SELECT 1 FROM Table)
BEGIN
--Do Something
END
ELSE
BEGIN
--Do Another Thing
END
PARA obtener el mejor rendimiento, use un nombre de columna específico en lugar de *, por ejemplo:
SELECT TOP 1 <columnName>
FROM <tableName>
Esto es óptimo porque, en lugar de devolver la lista completa de columnas, está devolviendo solo una. Eso puede ahorrar algo de tiempo.
Además, devolver solo la primera fila si hay algún valor, lo hace aún más rápido. En realidad, solo tienes un valor como resultado: si hay filas o no hay valor si no hay filas.
Si utiliza la tabla de manera distribuida, que es lo más probable, el transporte de un solo valor del servidor al cliente es mucho más rápido.
También debe elegir sabiamente entre todas las columnas para obtener datos de una columna que puede tomar el menor recurso posible.
Rápido:
SELECT TOP (1) CASE
WHEN **NOT_NULL_COLUMN** IS NULL
THEN ''empty table''
ELSE ''not empty table''
END AS info
FROM **TABLE_NAME**