Tamaño de tabla extraño en SQL Server
Frecuentes
Visto 167 veces
1
Tengo 2 tablas en SQL Server
URL de Tb
- ÍNDICE ESPACIO 12,531 MB
- RECUENTO DE FILAS 247505
- ESPACIO DE DATOS 1.965,891 MB
Estructura de la mesa:
CREATE TABLE [TbUrl](
[IdUrl] [Int] IDENTITY(1,1) NOT NULL,
[IdSupply] [Int] NOT NULL,
[Uri] [varchar](512) NOT NULL,
[UrlCod] [varchar](256) NOT NULL,
[Status] [Int] NOT NULL,
[InsertionDate] [datetime] NOT NULL,
[UpdatedDate] [datetime] NULL,
[UpdatedIp] [varchar](15) NULL
TbUrlDetalle
- ÍNDICE ESPACIO 29,406 MB
- RECUENTO DE FILAS 234209
- ESPACIO DE DATOS 386,047 MB
Estructura:
CREATE TABLE .[TbUrlDetail](
[IdUrlDetail] [Int] IDENTITY(1,1) NOT NULL,
[IdUri] [Int] NOT NULL,
[Title] [varchar](512) NOT NULL,
[Sku] [varchar](32) NOT NULL,
[MetaKeywords] [varchar](512) NOT NULL,
[MetaDescription] [varchar](512) NOT NULL,
[Price] [money] NOT NULL,
[Description] [text] NOT NULL,
[Stock] [Bit] NOT NULL,
[StarNumber] [Int] NOT NULL,
[ReviewNumber] [Int] NOT NULL,
[Category] [varchar](256) NOT NULL,
[UrlShort] [varchar](32) NULL,
[ReleaseDate] [datetime] NOT NULL,
[InsertionDate] [datetime] NOT NULL
El tamaño de TbUrl
es muy grande en comparación con TbUrlDetail
El diseño (diseño) de la mesa TbUrl
es menor en comparación con TbUrlDetail
pero el espacio de datos es otra cosa.
Hice SHRINK ON DATABASE
pero el espacio de TbUrl
no reduce.
¿Qué podría estar pasando? ¿Cómo disminuyo el espacio de esta mesa?
2 Respuestas
3
¿Hay un índice agrupado en la tabla? (De lo contrario, podría estar sufriendo muchos problemas con el futuro: ref..) ¿Ha realizado cambios drásticos en los datos o los tipos de datos o las columnas añadidas/eliminadas? (Si tiene, es posible que gran parte del espacio ocupado anteriormente no pueda reutilizarse. una referencia donde cambiar una columna de longitud fija a variable no recupera espacio).
En ambos casos, debería poder recuperar el espacio desperdiciado al reconstruir la tabla (que también reconstruirá todos los índices agrupados):
ALTER TABLE dbo.TblUrl REBUILD;
Si tiene Enterprise Edition, puede hacerlo en línea:
ALTER TABLE dbo.TblUrl REBUILD WITH (ONLINE = ON);
Reducir toda la base de datos no es la respuesta mágica aquí. Y si no hay un índice agrupado en esta tabla, le sugiero que considere uno antes realizando la reconstrucción.
contestado el 03 de mayo de 12 a las 16:05
¡GRACIAS! Ejecuté el comando ALTER TABLE dbo.TblUrl REBUILD; y ALTER INDEX ALL ON dbo.TbUrl REBUILD; La tabla ahora tiene ESPACIO DE DATOS 38,773 MB - Jeferson Tenorio
0
Con los campos VARCHAR(), la cantidad de espacio realmente ocupado varía según la cantidad de texto que se coloca en esos campos.
¿Quizás podría tener (en promedio) entradas mucho más cortas en una tabla que en la otra?
Trata
SELECT
SUM(CAST(LENGTH(uri) + LENGTH(urlcod) AS BIGINT)) AS character_count
FROM
TbUrl
SELECT
SUM(CAST(LENGTH(title) + LENGTH(metakeywords) + LENGTH(metadescription) + LENGTH(Category) AS BIGINT)) AS character_count
FROM
TbUrlDetail
contestado el 03 de mayo de 12 a las 16:05
Hola. El resultado es: 25452193 primera consulta y 103720201 segunda consulta. - Jeferson Tenorio
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sql database sql-server-2008 database-design or haz tu propia pregunta.
reducir una base de datos rara vez es una buena idea - Mitch Wheat
¿En qué columnas está definido su índice agrupado? - Mitch Wheat