Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Постраничная выборка )  [new]
1
Guest
Наткнулся на интересную статью. http://www.codeproject.com/aspnet/PagingLarge.asp
Прокомментируйте, пожалуйста, отношение автора к методу с временной таблицей, который в местном факе идет под лейблом "эффективный".
2 дек 04, 12:54    [1152343]     Ответить | Цитировать Сообщить модератору
 Re: Постраничная выборка )  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
1
Наткнулся на интересную статью. Прокомментируйте, пожалуйста, отношение автора к методу с временной таблицей, который в местном факе идет под лейблом "эффективный".

Самый главный комментарий: Эффективность - штука странная, универсальных решений нет... в каждом случае свое решение -лучшее ..
2 дек 04, 13:03    [1152384]     Ответить | Цитировать Сообщить модератору
 Re: Постраничная выборка )  [new]
1
Guest
Alex Antonoff
Самый главный комментарий: Эффективность - штука странная, универсальных решений нет... в каждом случае свое решение -лучшее ..


Не, а там чиста вот такая конкретная ситуация. Таблица 500тыс записей, БД кто-то хостит, ресурсы соотв. неопределенно-неконтролируемые...

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[InsertLargeTableData]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[InsertLargeTableData]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[LargeTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[LargeTable]
GO

CREATE TABLE [dbo].[LargeTable] (
	[PK] [uniqueidentifier] NOT NULL ,
	[Indexed] [varchar] (150) NOT NULL ,
	[NonIndexed] [varchar] (150) NOT NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[LargeTable] WITH NOCHECK ADD 
	CONSTRAINT [PK_LargeTable] PRIMARY KEY  CLUSTERED 
	(
		[PK]
	)  ON [PRIMARY] 
GO

 CREATE  INDEX [IX_LargeTable] ON [dbo].[LargeTable]([Indexed]) ON [PRIMARY]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

CREATE PROCEDURE InsertLargeTableData (
@NumberOfRows bigint
)
AS

SET NOCOUNT ON

DECLARE @cnt bigint
SET @cnt = 0

WHILE @cnt < @NumberOfRows
BEGIN
    INSERT INTO LargeTable 
    SELECT newid(), 
    CAST(newid() AS VARCHAR(36)) + CAST(newid() AS VARCHAR(36)) + CAST(newid() AS VARCHAR(36)) + CAST(newid() AS VARCHAR(36)),
    CAST(newid() AS VARCHAR(36)) + CAST(newid() AS VARCHAR(36)) + CAST(newid() AS VARCHAR(36)) + CAST(newid() AS VARCHAR(36))

    SET @cnt = @cnt + 1
END
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
2 дек 04, 18:41    [1154184]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить