Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Reindeksiranje tabela ili cele baze

[es] :: MS SQL :: Reindeksiranje tabela ili cele baze

[ Pregleda: 2123 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kg.rules
CSK
KG

Član broj: 270577
Poruke: 12
147.91.200.*



Profil

icon Reindeksiranje tabela ili cele baze28.12.2011. u 15:09 - pre 149 meseci
Pozdrav svima.

Nigde nisam mogao da nadjem odgovor na neko ovakvo pitanje.

Zanima me da li se ubrzava rad upita nad bazom tj tabelama kada je ona "sredjena" tj vrednosti po primarnom kljucu (npr) idu redom nego kada su redovi u bazi recimo random.

Primer: Primarni kljuc ima vrednosti 1,4,19,2,16,22 ... (ovim redom su unosene vrednosti u tabelu)
ili kada je primarni kljuc sortiran po npr rastucem redosledu. (1,2,4,16,19,22 ...)

Ako upit brze radi kada su redovi u tabeli sredjeni kako postici njihovo reindeksiranje tj kako ih sortirati po rastucem redosledu npr?

Hvala ...
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-a-10.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: Reindeksiranje tabela ili cele baze28.12.2011. u 17:15 - pre 149 meseci
Tačno je da upiti rade brže kada je baza "sređena". Jedan od razloga postojanja indeksa upravo jeste ubrzanje pretrage.
E, sad. Polje nad kojim je podignut primarni ključ ne mora da bude grupišući indeks za neku tabelu. Npr. tabela može da
ima polje "Id" i da nad njom bude podignut primarni ključ a da grupišući indeks bude podignut nad
poljem "Redosled". To najviše zavisi od toga koje se polje najčešće navodi u WHERE klauzuli kada se vrši
upit nad tom tabelom. Indeksa može da se podigne neograničeni broj ali samo jedan može biti grupišući. To znači da će
podaci fizički biti poređani po tom polju. Naravno, kreiranje indeksa usporava upis i izmenu tako da ih treba dodavati
samo prema potrebi i s pažnjom.
Postavio si pitanje iz oblasti koja je poprilično široka i ako želiš da je savladaš preporučujem ti da potražiš neku literaturu
i da eksperimentišeš sa velikim brojem stavki. SQL Profiler ti može postati najbolji drug ;-).
Pozdrav.
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-a-10.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: Reindeksiranje tabela ili cele baze28.12.2011. u 17:17 - pre 149 meseci
Umalo da zaboravim. Skript za reindeksaciju svih tabela:
Code:

CREATE TABLE #A(RBr INT IDENTITY(1, 1), table_name NVARCHAR(100))

INSERT INTO #A
SELECT table_name FROM information_schema.tables 
WHERE table_type = 'base table' ORDER BY  table_name

DECLARE @I INT
DECLARE @BrTabela INT
SET @I = 1
SET @BrTabela = (SELECT COUNT(*) FROM #A)

DECLARE @tabela sysname
DECLARE @SQL NVARCHAR(100)

WHILE @I <= @BrTabela
BEGIN
SET @tabela = (SELECT table_name FROM #A WHERE RBr = @I)
SET @SQL = 'ALTER INDEX ALL ON [' + @tabela + '] REBUILD'
EXEC sp_executesql @SQL
SET @SQL = 'ALTER INDEX ALL ON [' + @tabela + '] REORGANIZE'
EXEC sp_executesql @SQL
SET @I = @I + 1
END

DROP TABLE #A
GO
 
Odgovor na temu

kg.rules
CSK
KG

Član broj: 270577
Poruke: 12
147.91.200.*



Profil

icon Re: Reindeksiranje tabela ili cele baze29.12.2011. u 11:55 - pre 149 meseci
Hvala Dusane.

Hvala na odgovoru. Pretpostavljao sam da radi brze ali nisam bio siguran, a da mogu da indeksiram tabelu po bilo kojoj koloni to mi je jasno.

U sustini ja bih trebao da regrupisem tabelu (bazu) npr 1 u godinu dana ili jednom mesecno. Dakle korisnik unosi podatke i jednom mesecno ili godisnje (nebitno) odradi se "sredjivanje".

 
Odgovor na temu

[es] :: MS SQL :: Reindeksiranje tabela ili cele baze

[ Pregleda: 2123 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.