Tamaño de tabla extraño en SQL Server

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?

preguntado el 03 de mayo de 12 a las 15:05

reducir una base de datos rara vez es una buena idea -

¿En qué columnas está definido su índice agrupado? -

2 Respuestas

¿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

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 or haz tu propia pregunta.