Как быстро обрабатывать доступ к таблице, если она содержит огромное количество данных ?
Проблема
Я работаю на SQL server 2012 у меня есть таблица с 300 сотнями миллионов строк
когда выбираешь из таблицы какие-то записи, это слишком тяжело
Мне нужен любой способ повысить производительность таблицы по крайней мере если я выберу небольшой объем данных в виде 1000 строк
можно получить доступ быстро и не занять слишком много времени
так что если есть какие-то идеи, которые я могу принять, чтобы быстро получить доступ к этой таблице
потому что при выборе данных он висит и занимает слишком много времени, чтобы показать данные .
так как же это сделать, пожалуйста ?
Что я уже пробовал:
CREATE TABLE [Parts].[Nop_Part]( [PartID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [PartNumber] [nvarchar](70) NOT NULL, [PartNumberNon] [nvarchar](60) NOT NULL, [CompanyID] [int] NOT NULL, [Active] [bit] NOT NULL, [Deleted] [bit] NOT NULL, [PartsFamilyID] [int] NOT NULL, [PackageID] [int] NULL, [PinOutId] [int] NOT NULL, [GroupID] [bigint] NULL, [Equation] [varchar](500) NULL, [Masked_ID] [int] NULL, [CreatedDate] [datetime] NULL, [CreatedBy] [int] NULL, [ModifiedDate] [datetime] NULL, [Modifiedby] [int] NULL, [DeletedDate] [datetime] NULL, [DeletedBy] [int] NULL, [LatestCompanyID] [bigint] NOT NULL, [DateOfLatestCompanyID] [datetime] NULL, CONSTRAINT [PK_Nop_Part] PRIMARY KEY CLUSTERED ( [PartID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [UC_Partnon_LatestCompanyID] UNIQUE NONCLUSTERED ( [PartNumberNon] ASC, [LatestCompanyID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [uc_partnumbernonCompany] UNIQUE NONCLUSTERED ( [PartNumberNon] ASC, [CompanyID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO ALTER TABLE [Parts].[Nop_Part] ADD CONSTRAINT [DF_Nop_Part_PinOutId] DEFAULT ((0)) FOR [PinOutId] GO ALTER TABLE [Parts].[Nop_Part] ADD DEFAULT (getdate()) FOR [DateOfLatestCompanyID] GO ALTER TABLE [Parts].[Nop_Part] WITH NOCHECK ADD FOREIGN KEY([Masked_ID]) REFERENCES [dbo].[Core_Masked] ([ID]) GO
F-ES Sitecore
Нет никакого ответа "волшебной пули". Определите, что вы запрашиваете медленно (то есть то, что находится в ваших аргументах WHERE), и постройте индекс на этих полях. Обратите внимание, что индексы могут ускорить запрос, но замедлят вставку. Google для настройки sql - запросов, чтобы получить идеи, это огромная тема.
ahmed_sa
Спасибо за ответ я прошу здесь только для того чтобы дать мне некоторое представление о том что я делаю только и дать мне публичные причины для этого
Richard MacCutchan
Убедитесь, что ваши таблицы проиндексированы, чтобы сервер мог быстро находить записи.
Patrice T
Определение "слишком долго"
Richard Deeming
"300 сотен миллионов строк"
Вы в этом уверены? Это было бы 30 миллиард строки.