» »

SQL indeks?

SQL indeks?

ta_pravi ::

Lep pozdrav

Kreiral sem skupinski indeks. Zdaj bi ga pa rad uporabil in sicer tako, da bi to navadel v poizvedbi, pa mi javi napako.

POIZVEDBA:

SELECT *
FROM prednarocilo
USE INDEX(skupinski_index1)

Uporabljam pa Microsoft SQL server in za poizvadbe pa SQL Server Management Studio Express.

LP
ta_pravi

NavadniNimda ::

Zakaj bi pa uporabil indeks, če zahtevaš, da ti vrne celo tabelo?! Index je primarno namenjen hitremu iskanju.

Če v gornjem primeru hočeš, da ti zapise vrne v nekem vrstnem redu, uporabi ORDER BY klavzulo - če bo index uporaben, pa ga bo SQL server tudi uporabil (avtomatično in brez hinta).

Fizikalko ::

Brez where pogoja je index nesmiselno uporabljat.

frudi ::

Kot prvo - ne uporabljaj hintov, razen če zelo dobro veš, kaj delaš. Query optimizer dejansko (večinoma) ve, kaj dela, tako da boš z uporabo hintov običajno naredil več škode, kot koristi.

kot drugo - indexi se uporabijo avtomatsko, zato jih ne rabiš določiti preko hinta. Kvečjemu v kakih kompleksnejših querijih ali če veš, da ima uporabljen index zastarelo statistiko, ali pa kak podoben scenarij, s katerimi pa se ne rabiš obremenjevati...

kot tretje - v T-SQL se hinte uporablja s keywordom WITH, ne USE; recimo
SELECT *
FROM prednarocilo WITH(INDEX(skupinski_index1))

in za konec - indexi so uporabni za filtriranje in združevanje podatkov. V querijih brez WHERE pogoja in/ali JOIN-ov ne bo koristi od njih. No, mogoče če bi select-al le stolpce, ki so del indeksa, kar v tvojem primeru ne drži.
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)

ta_pravi ::

indeksov ne delam kar tako brezveze, ampak imamo par nalog v seminarski nalogi za nardit z uporabo indeksov. Ja uporabil jih bom v where pogoju. Delamo pa z indeksi na tabeli ki ima 100 000 zapisov...mislim da je to dovolj dober razlog...?:)

Zgoraj sem samo dal primer poizvedbe, ki mi ne deluje, pa sem zelo hvaležen saj sem dobil odgovor na to kaj naj bi bilo narobe oziroma kako se sploh uporabi indeks v poizvedbi v Microsoft SQL....

Vsem hvala za odgovore! Ko probam pa vam javim če dela...

LP
ta_pravi

frudi ::

Sej indeksi niso brezveze, so pravzaprav nujni za vsako dobro postavljeno bazo.
Ni pa smiselno forsirati njihovo uporabo v querijih, s pomočjo hintov; razen če imaš zelo specifičen razlog za takšno početje. V 99% primerov, bo query optimizer sam pripravil boljši execution plan, kot če ga 'omejuješ' s hinti.
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)

ta_pravi ::

...kaj so sploh to HINTI???:)
ta_pravi

ta_pravi ::

...aja kako pa bi uporabil več indeksov naenkrat v poizvedbi?

LP
ta_pravi

Fizikalko ::

Vse bolj se mi dozdeva, da sploh ne veš, kaj je indeks...

ta_pravi ::

...prbližno vem kaj je:)mi pa ni še vse jasno
ta_pravi


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

SQL inner join

Oddelek: Programiranje
393320 (2575) smacker
»

Myslq index ne deluje???

Oddelek: Izdelava spletišč
172229 (2007) algo
»

mysql "hitrost"

Oddelek: Izdelava spletišč
91979 (1861) Veron
»

[PHP + mysql] Kako vstaviti več vrstic naenkrat ?

Oddelek: Programiranje
131489 (1296) Ziga Dolhar
»

[mySQL] Kaj je hitrejše?

Oddelek: Programiranje
141400 (1201) dmok

Več podobnih tem