SQL Server Performance

Cuantas tablas puede sql

Discussion in 'Preguntas sobre SQL Server en Español.' started by fjac_pe, Mar 28, 2005.

  1. fjac_pe New Member

    Favor, cuantas tablas puede almacenar sql, tengo un problema con tablas de 1,7 millones de registros, las consultas son lentas, y si agrego indices, la inserccion en esta tabla es muy lenta o quiebra el tiempo de espera, tengo pensado generar tablas mensuales los cuales tendra un promedio de 30 000 registros mensuales o 50 000, asi si la produccion incrementa barbaramente, llegare a tener unos 200 000 registros mensuales, teniendo una tabla de soporte o indice que me indicara donde ubicar mi informacion, por eso queria saber la cantidad maxima de tablas en sql, o algun consejo?

    Jesus Aguilar
  2. Luis Martin Moderator

    Los objetos en una base de datos incluyendo: tablas, vistas, procedimientos almacenados, procemiento almacenados extendidos, triggers, reglas (rules), defaults y restricciones (constraints) no pueden exceder 2.147.483.647.




    Luis Martin
    Moderator
    SQL-Server-Performance.com

    One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important
    Bertrand Russell


    All postings are provided “AS IS” with no warranties for accuracy.



  3. fjac_pe New Member

    Ok, muchas gracias por el dato
  4. c_maldon Member

    Fejate si te son útiles las vistas divididas.
  5. fjac_pe New Member

    Ok, si son utiles es la manera como trabajare, primero busco en el indice donde puedo ubicar mi informacion y luego hago una consulta a la multiples tablas que encuentre, vista exactamente no, sino un store ya que enviare multiples parametros segun requiera. Gracias por la nota de vistas divididas
  6. c_maldon Member

    Las vistas divididas de SQL Server se encargan solas de saber en que tabla está la información.

    Supongamos que un vista dividida esta formada por cuatro tablas, la de ventas del año 2002, 2003, 2004 y 2005. Para este ejemplo el criterio de particion de la tabla es el año de venta.

    Cuando insertás en la vista, según sea la fecha, la pondrá en la tabla que corresponda.

    Saludos

  7. fjac_pe New Member

    Es muy bueno el dato, me podrias explicar mas detallado, con algun ejemplo, pq como podria saber en que tabla insertare una nueva factura, por la fecha pero que programacion en sql adicional se haria para que se ejecture la insersion, en mi caso tengo una produccion de 50 paquetes con 20 prendas cada paquete y una secuencia de operaciones, digamos cortar, pegar, unir, cerrar costado, el resultado tendria que ser


    paquete operacion cantidad corte produccion
    1 cortar 20 125 147
    1 pegar 20 125 147
    1 unir 20 125 147
    2 cortar 20 125 147
    2 pegar 20 125 147
    2 unir 20 125 147
    3 cortar 20 125 147
    3 pegar 20 125 147
    3 unir 20 125 147
    1 cortar 20 127 147
    1 pegar 20 127 147
    1 unir 20 127 147

    Eso hace mi sistema, con mas campos pero mi base crece a un promedio de 10 000 registros x dia, por lo cual partire la tabla resultante en tablas mensuales y generar un indice por corte donde guarde el corte, produccion, prenda, etc y el nombre de la tabla donde pueda ubicar los registros, la vista me sirve pero antes de hacerlo tendria que saber en que tablas buscar, x eso lo hago con stores para agilizar el trabajo.
  8. c_maldon Member

    Te mando un ejemplo, fijate que los insert se hacen a la vista que despues distribuye el dato a la tabla correspondiente, la vista utiliza las CONSTRAINT CHECK para saber en que tabla tiene que poner el registro.

    Las vistas divididas tienen algunas restricciones que deberias leer en el manual de SQL Server antes de utilizarlas.

    Saludos

    -- drop TABLE [Factura_2005_Enero]
    CREATE TABLE [Factura_2005_Enero] (
    [paquete] [int] NOT NULL ,
    [operacion] [varchar] (10) NOT NULL ,
    [cantidad] [int] NOT NULL ,
    [corte] [int] NOT NULL ,
    [produccion] [int] NOT NULL ,
    [Fecha] [datetime] NOT NULL ,
    [Mes] [int] NOT NULL ,
    [Año] [int] NOT NULL ,
    CONSTRAINT [PK_Factura_2005_Enero] PRIMARY KEY CLUSTERED
    (
    [Mes],
    [Año],
    [operacion],
    paquete
    ) ON [PRIMARY] ,
    CONSTRAINT [CK__01] CHECK (datepart(year,[Fecha]) = 2005 and datepart(month,[fecha]) = 1) ,
    CONSTRAINT [CK__02] CHECK ([Año] = 2005),
    CONSTRAINT [CK__03] CHECK ([Mes] = 1)
    )

    -- drop TABLE [Factura_2005_Febrero]

    CREATE TABLE [Factura_2005_Febrero] (
    [paquete] [int] NOT NULL ,
    [operacion] [varchar] (10) COLLATE Modern_Spanish_CI_AS NOT NULL ,
    [cantidad] [int] NOT NULL ,
    [corte] [int] NOT NULL ,
    [produccion] [int] NOT NULL ,
    [Fecha] [datetime] NOT NULL ,
    [Mes] [int] NOT NULL ,
    [Año] [int] NOT NULL ,
    CONSTRAINT [PK_Factura_2005_Febrero] PRIMARY KEY CLUSTERED
    (
    [Mes],
    [Año],
    [operacion],
    paquete
    ) ON [PRIMARY] ,
    CONSTRAINT [CK_03] CHECK (datepart(year,[Fecha]) = 2005 and datepart(month,[fecha]) = 2) ,
    CONSTRAINT [CK_04] CHECK ([Año] = 2005),
    CONSTRAINT [CK_05] CHECK ([Mes] = 2)
    )
    GO

    -- drop VIEW Factura

    CREATE VIEW Factura AS
    SELECT * FROM Factura_2005_Enero
    UNION ALL
    SELECT * FROM Factura_2005_Febrero

    GO

    set dateformat ymd
    set nocount on

    insert Factura (paquete, operacion, cantidad, corte, produccion, Fecha , Mes, Año)
    values (2,'Cotre',50,121,1213,'2005/01/15',1,2005)

    insert Factura (paquete, operacion, cantidad, corte, produccion, Fecha , Mes, Año)
    values (1,'Pintado',250,21,450,'2005/02/15',2,2005)

    insert Factura (paquete, operacion, cantidad, corte, produccion, Fecha , Mes, Año)
    values (3,'Cotre',650,27,58,'2005/01/10',1,2005)

    insert Factura (paquete, operacion, cantidad, corte, produccion, Fecha , Mes, Año)
    values (4,'Lustre',20,10,52,'2005/01/10',1,2005)

    insert Factura (paquete, operacion, cantidad, corte, produccion, Fecha , Mes, Año)
    values (5,'Cotre',250,21,450,'2005/02/15',2,2005)

    set nocount off

    -- Ver los 3 registros insertados a la tabla Enero

    SELECT * FROM Factura_2005_Enero

    -- Ver los 2 registros insertados a la tabla Enero

    SELECT * FROM Factura_2005_Febrero

    -- La vista tiene todos los reguistros

    SELECT * FROM Factura

  9. fjac_pe New Member

    Ok, gracias por el dato, la verdad no sabia que se podria manejar de esa manera la informacion tambien, gracias

Share This Page