CREATE NONCLUSTERED INDEX CL_perf_test ON sp_perf_test(column1)
ШАГ 4. Создание некластерного индекса. Поскольку план выполнения кэшируется вместе с процедурой, индекс будет при всех вызовах использоваться одинаково.
SELECT COUNT(*) FROM sp_perf_test
INSERT INTO sp_perf_test(column1, column2) VALUES(50000,'Test string #'+CAST(@i as char(8)))
INSERT INTO sp_perf_test(column1, column2) VALUES(@i,'Test string #'+CAST(@i as char(8)))
ШАГ 3. Заполнение таблицы тестовыми строками. В таблицу намеренно добавляются дублирующиеся строки. 10000 строк с номерами от 1 до 10000, и 10000 строк с номерами 50000.
CREATE TABLE sp_perf_test(column1 int, column2 char(5000))
ШАГ 2. Создание таблицы.
LOG ON (NAME='test_log', FILENAME='c:\temp\test_log', SIZE=1, MAXSIZE=10,FILEGROWTH=1Mb)
ON (NAME='test_data', FILENAME='c:\temp\test_data', SIZE=1, MAXSIZE=10,FILEGROWTH=1Mb)
Для эксперимента создадим отдельную базу данных.
ШАГ 1. Создание БД.
Проведет небольшой эксперимент, чтобы продемонстрировать это.
Дело в том, что при компиляции хранимой процедуры компилируется план выполнения тех операторов, которые составляют код процедуры, соответственно, если откомпилированная хранимая процедура кэшируется, то кэшируется и ее план выполнения, а следовательно, хранимая процедура не будет оптимизироваться под конкретную ситуацию и параметры запросов.
С другой стороны в хранении откомпилированного кода хранимой процедуры кроются подводные камни, которые могут иметь обратный эффект.
При компиляции хранимых процедур в MS SQL Server 2000 хранимые процедуры помещаются в процедурный кэш, что может способствовать увеличению производительности при их выполнении за счет исключения необходимости в синтаксическом разборе, оптимизации и компиляции кода хранимых процедур.
Руслан Разбежкин
Производительность хранимых процедур MS SQL Server 2000
Advertising: frico 12 квт Реализуем красивое по хорошим ценам
РУССКИЕ ДОКУМЕНТЫ :: Производительность хранимых процедур MS SQL Server 2000
Комментариев нет:
Отправить комментарий