Databázy 2 - Prednáška č. 7
Created: 2009-03-31 - 17:01
/* 7. prednáška - INDEXY - clusterový (len jeden) a neklusterový (viac) - kedy dávať: ked stlpec sa nachadza v SELECTe vramci WHERE klauzuly na stlpce kde mame FOREIGN KEY na stlpce, ktore nie su casto menene - kedy nedavať: tam kde je casta zmena udajov malo rozdielnych hodnot ak je tabulka mala (ale je to jedno v podstate) ked selektujeme viac nez 10 percent riadkov */ --priklad na INSERT do indexovanej tabulky USE tempdb; SET NOCOUNT on; GO IF OBJECT_ID(N'randTab_1ind') IS NOT NULL DROP TABLE randTab_1ind; GO -- 1 najprv bez indexu CREATE TABLE randTab_1ind ( id INT, rand_x float, rand_date DATETIME ); GO -- 2 a)b)c) najprv indexy a potom vkladat --toto postupne zakomentovat --CREATE INDEX ind_rand_x ON randTab_1ind(rand_x) --CREATE CLUSTERED INDEX ind_rand_date ON randTab_1ind(rand_date) DECLARE @beg datetime, @end datetime, @dtm datetime; DECLARE @i INT; SET @i = 0; SET @beg = GETDATE(); WHILE @i < 50000 BEGIN SET @i = @i + 1; INSERT INTO randTab_1ind VALUES ( @i, RAND(), CONVERT(DATETIME, 365*101+25+2001*RAND()) ) END -- 3 najprv vlozit a potom indexy --CREATE INDEX ind_rand_x ON randTab_1ind(rand_x) --CREATE CLUSTERED INDEX ind_rand_date ON randTab_1ind(rand_date) SET @end = GETDATE(); print DATEDIFF(MILLISECOND, @beg, @end); --porovnavanim jednotlivych casov vidime aky je medzi tym rozdiel -- teda ked insertujeme a potom indexujeme alebo opacne... -- najprv vlozit a potom indexovat je rychlejsie...