Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

По сравнению с тем, что было в первый раз записи стали располагаться в другом порядке, хотя я удаляла и заново создавала и заполняла таблицу. Чтобы не осталось упорядочивание после применения



Без ключа:

1 запрос:

 

2 запрос:


 

3 запрос:

По сравнению с тем, что было в первый раз записи стали располагаться в другом порядке, хотя я удаляла и заново создавала и заполняла таблицу. Чтобы не осталось упорядочивание после применения индексов в прошлый раз.


 

Кластерный индекс FInt1:

1 запрос:

 

2 запрос:


 

3 запрос:


 

Кластерный индекс FInt1 + 2 некластерных:

Пока выполняла обнаружила, что у меня в прошлый раз индекс был по FDate2, а запрос по FDate1 – исправила, но это ничего не поменяло в результате:

2 запрос:

 

3 запрос:


 

Кластерный индекс FStr1 + 3 некластерных индекса:

Так же были сделаны ключи не по тем полям – исправила. Результат есть!

1 запрос:

 

2 запрос:


 

3 запрос:


 

И даже получился тот «скачек» времени, который не получился в первый раз. Табличка:

Запрос

Без ключа

Ключ FInt1

Ключ FInt1 + некласт. индекс

Ключ FStr1 + некласт. индекс

4.А (по FInt1)

0:16

0:02

-

0:01

4.Б (по FChar2)

0:16

0:15

0:05

0:15

4.В (по FDate1)

0:17

0:17

0:17

0:23

 

Но возник вопрос, почему время на выполнение запросов без ключей уменьшилось в 2 раза? Ведь я специально удаляла все и создавала снова, чтобы не оставалось упорядочивания с предыдущих попыток. К тому же, заполнение таблицы в этот раз составило всего 4:45, а в прошлый раз более 11 минут. Как так?

 


 

Код:

create table T1

(

FInt1 int not null,

FInt2 int,

FChar1 nchar(6) not null,

FChar2 nchar(6),

FStr1 nvarchar(500) not null,

FStr2 nvarchar(500),

FDate1 datetime not null,

FDate2 datetime,

FDec1 decimal(18,6) not null,

FDec2 decimal(18,6)

)

 

if exists (select *

from dbo.sysobjects

where id=OBJECT_ID(N'FillTable') and OBJECTPROPERTY(id,N'isProcedure')=1

)

drop proc Filling

 

go

 

create proc Filling

as

declare @i int=0

declare @i2 int

declare @str nvarchar(200)=''

declare @date datetime='15-09-2012'

while @i<200

begin

set @str=@str+'0'

set @i=@i+1

end

set @i=0

while @i<1000000

begin

set @i2=@i%10000

insert T1

select @i,

@i2,

@i,

@i2,

@str+CAST(@i as nvarchar(7)),

@str+CAST(@i2 as nvarchar(7)),

DATEADD(s,@i,@date),

DATEADD(s,@i2,@date),

CAST(@i as float)/10000,

CAST(@i2 as float)/10000

set @i=@i+1

end

 

exec Filling

 

DBCC SHRINKDATABASE (db4, 0)

 

create clustered index FirstKey

on T1(FDec1)

 

drop index FirstKey on T1

drop index SecondKey on T1

 

create nonclustered index SecondKey

on T1(FInt2)

 

create nonclustered index SecondKey

on T1(FChar2)

with (DROP_EXISTING = ON)

 

create nonclustered index SecondKey

on T1(FStr2)

with (DROP_EXISTING = ON)

 

create nonclustered index SecondKey

on T1(FDate2)

with (DROP_EXISTING = ON)

 

create nonclustered index SecondKey

on T1(FDec2)

with (DROP_EXISTING = ON)

 

DBCC SHRINKDATABASE (db4, 0)

sp_spaceused

 

select *

from T1

where FInt1>1000000-1001

 

select *

from T1

where FChar2 in (1, 10, 100, 1000, 10000, 99999, 9999, 999, 99, 9)

 

select *

from T1

where DATEPART(HH, FDate1)=12

 

create clustered index FirstKey



on T1(FInt1)

 

create nonclustered index SecondKey

on T1(FChar2)

 

create nonclustered index ThirdKey

on T1(FDate1)

 

drop index FirstKey on T1

drop index SecondKey on T1

drop index ThirdKey on T1

 

create clustered index FirstKey

on T1(FStr1)

 

create nonclustered index SecondKey

on T1(FChar2)

 

create nonclustered index ThirdKey

on T1(FInt1)

 

create nonclustered index FourthKey

on T1(FDate1)

 

drop index FirstKey on T1

drop index SecondKey on T1

drop index ThirdKey on T1

drop index FourthKey on T1

 


Дата добавления: 2015-08-28; просмотров: 34 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Где найти «правильных» новичков? | По сравнению с тем, что было в первый раз записи стали располагаться в другом порядке, хотя я удаляла и заново создавала и заполняла таблицу. Чтобы не осталось упорядочивание после применения

mybiblioteka.su - 2015-2024 год. (0.013 сек.)