una todas tamaño tablas script para máxima listar las especificaciones ejemplos datos consultas capacidad bases sql-server-2005

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**