Tengo una tabla de tres columnas con poco más de 6 mil millones de filas en SQL Server 2008 R2.
Lo consultamos todos los días para crear gráficos de análisis del sistema minuto a minuto para nuestros clientes. No he notado ningún impacto en el rendimiento de la base de datos (aunque el hecho de que crece ~ 1 GB cada día hace que la gestión de las copias de seguridad sea un poco más complicada de lo que me gustaría).
Actualización de julio de 2016
Llegamos a ~ 24.5 mil millones de filas antes de que las copias de seguridad fueran lo suficientemente grandes como para decidir truncar los registros de más de dos años (~ 700 GB almacenados en varias copias de seguridad, incluso en cintas caras). Vale la pena señalar que el desempeño no fue un motivador significativo en esta decisión (es decir, todavía estaba funcionando muy bien).
Para cualquiera que se encuentre tratando de eliminar 20 mil millones de filas de SQL Server, le recomiendo este artículo . Código relevante en caso de que el enlace muera (lea el artículo para obtener una explicación completa):
ALTER DATABASE DeleteRecord SET RECOVERY SIMPLE;
GO
BEGIN TRY
BEGIN TRANSACTION
SELECT *
INTO dbo.bigtable_intermediate
FROM dbo.bigtable
WHERE Id % 2 = 0;
TRUNCATE TABLE dbo.bigtable;
SET IDENTITY_INSERT dbo.bigTable ON;
INSERT INTO dbo.bigtable WITH (TABLOCK) (Id, c1, c2, c3)
SELECT Id, c1, c2, c3 FROM dbo.bigtable_intermediate ORDER BY Id;
SET IDENTITY_INSERT dbo.bigtable OFF;
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH
ALTER DATABASE DeleteRecord SET RECOVERY FULL;
GO
Actualización de noviembre de 2016
Si planea almacenar esta cantidad de datos en una sola tabla: no lo haga. Le recomiendo que considere la partición de tablas (ya sea manualmente o con las funciones integradas si está ejecutando la edición Enterprise). Esto hace que eliminar datos antiguos sea tan fácil como truncar una tabla una vez a la (semana / mes / etc.). Si no tiene Enterprise (que no tenemos), simplemente puede escribir un script que se ejecute una vez al mes, descarte tablas de más de 2 años, cree la tabla del próximo mes y regenere una vista dinámica que se una a todas las particiones tablas juntas para facilitar la consulta. Obviamente, usted debe definir "una vez al mes" y "más de 2 años" en función de lo que tenga sentido para su caso de uso.