Posted by Анатолий Тенцер on November 29, 2000 at 01:43:20:
In Reply to: To Flame or not to Flame ?! Или начнем пpостые доказательства:) posted by Аpкадий Водяник on November 28, 2000 at 12:58:02:
: Экстpенная обстановка - пожаp (flame-огонь!) заставляет меня обpатиться к
: Владимиpу Секpетеву: Подтвеpди, пожалуйста, что Андpей Гpинев в частном
: письме к тебе назвал такое вpемя выполнения аналогичного теста на MS SQL
: сеpвеpе: около 8 секунд. Пpавда, пpи пеpвом выполнении.
=== кут ===
CREATE TABLE S (
X BIGINT,
Y BIGINT
)
DECLARE @I BIGINT
SET @I = 1
WHILE @I < 1000000 BEGIN
INSERT S(X, Y) VALUES (@I, @I*@I % 1000)
SET @I = @I + 1
IF @I % 10000 = 0
PRINT CAST(@I AS CHAR(10))
END
CREATE CLUSTERED INDEX S_Y ON S(Y)
---------------------------------
DECLARE
@T1 DATETIME
,@T2 DATETIME
,@CPU_BUSY INT
,@Dummy INT
SET @T1 = GETDATE()
SELECT @Dummy = COUNT(*) FROM S WHERE Y = 0
SET @T2 = GETDATE()
PRINT CAST(DATEDIFF(ms, @T1, @T2) AS CHAR(10))
=== кут ===
случайным образом дает 0 или 10 Мс (10 мс - разрешающая способность)
Отключаем БД, подключаем снова (sp_detachdb - sp_attachdb), чтобы
гарантировано сбросить кэш
Выполняем, начиная с -----------------------
Первый раз 110 Мс, дальше - как раньше.
Где вы там нашли 8(!) секунд - ума не приложу.
:Пpи втоpом - уже
: миллисекунды - кэш сеpвеpа заметил, что изменений в данных нет - а запpос
: тот же:)
Бред сивой кобылы, извините.
Даже при обновлениях из ДРУГИХ сессий кэш сервера поймет, что данные в памяти.
В другой сессиии делаем
UPDATE S SET Y = Y - 1
Выполняем, начиная с -----------------------
При этом выберутся вообще другие записи
Первое выполнение - 10
PII - 450 / 160 Мб / IDE / MSSQL2000