sergei.knyazev
Дата: 05.04.2005 23:41:24
У меня сложилась такая ситуация.
Есть две таблицы на MSDE2000. В каждой по 5000 записей.
одна и таже постейшая процедура Fill занимает разное время. Причем одна таблица филится примерно 3 секунды, другая же 1 минуту. Причём по объему данных, как это не парадоксально, больше более скоростная таблица. судите сами.
Медленная:
CREATE TABLE [ArticleFragmentation] (
[ArticleNumber] [int] NOT NULL ,
[Drug_id] [int] NOT NULL ,
[Checked] [int] NULL ,
[EntDate] [smalldatetime] NULL ,
CONSTRAINT [PK_ArticleFragmentation] PRIMARY KEY CLUSTERED
(
[ArticleNumber],
[Drug_id]
) ON [PRIMARY]
) ON [PRIMARY]
GO
Быстрая:
CREATE TABLE [ArticleProperties] (
[ArticleNumber] [int] NOT NULL ,
[PropertyName] [varchar] (50) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[ImageProperty] [image] NULL ,
[IntProperty] [int] NULL ,
[StringProperty] [varchar] (300) COLLATE Cyrillic_General_CI_AS NULL ,
[DecimalProperty] [decimal](18, 0) NULL ,
[DatetimeProperty] [smalldatetime] NULL ,
[PropertyType] [int] NOT NULL ,
[EntDate] [smalldatetime] NOT NULL ,
CONSTRAINT [PK_ArticleProperties] PRIMARY KEY CLUSTERED
(
[ArticleNumber],
[PropertyName]
) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Почему так?
sergei.knyazev
Дата: 06.04.2005 00:30:19
По ходу дела выяснилось, что скорость напрямую зависит от последовательности. те. та таблица, что филится первой делает это значительно медленней второй.
Совсем всё стало хорошо, когда перед ними обоими я поставил фил совсем маленькой таблицы (500 строк). Теперь всё филиться на ура.
Что это было?
sergei.knyazev
Дата: 08.04.2005 10:43:18
Неподскажите ли вы почему, даже если я, допустим, сам того не зная использвал connection pool и соединение бралось именно из него был такой разрыв в скорости и главное, почему всё изменилось от перемены мест слагаемых?