|
![]() | Informace o optimalizaci dotazu | ![]() | Indexy k databßzov²m tabulkßm | Použitφ index∙ neobsahujφcφch hodnoty NULL | ![]() |
Ka₧d² index uspo°ßdßvß zßznamy podle hodnot indexovΘho klφΦe, vzestupn∞ nebo sestupn∞. Je-li indexov²m klφΦem znakov² °et∞zec, pak se pou₧φvß lexikografickΘ uspo°ßdßnφ podle jazyka urΦenΘho v popisu sloupce tabulky.
Nßrodnφ lexikografickΘ uspo°ßdßnφ hodnot klφΦe umo₧≥uje efektivnφ vyhodnocenφ podmφnek na rovnost nebo nerovnost °et∞zc∙ pou₧it²ch v dotazu a takΘ set°φd∞nφ zßznam∙ v odpov∞di na dotaz. Nehodφ se vÜak k optimalizaci dotaz∙ obsahujφcφch podmφnku na prefix. Uva₧ujme Φesk² jazyk a tabulku obsahujφcφ tato data: 'caa', 'czz', 'd', 'cha', 'Ostra', 'Ostrß', 'Ostrava'.
V nßrodnφm lexikografickΘm indexu jsou tyto zßznamy v tom po°adφ, v n∞m₧ jsou v²Üe uvedeny. Pokud by se pou₧il tento index k optimalizaci dotazu sloupec.='c', pak by odpov∞∩ na dotaz obsahovala zßznamu 'caa', 'czz', ale ji₧ nikoli 'cha', proto₧e pr∙chod indexem by skonΦil na zßznamu 'd'. Podobn∞ odpov∞∩ na dotaz sloupec.='Ostra' by obsahovala pouze zßznam 'Ostra', proto₧e zßznam 'Ostrß' by vytvß°enφ odpov∞di ukonΦil a zßznam 'Ostrava' by nemohl b²t nalezen.
Nßrodnφ lexikografickΘ indexy nelze proto pou₧φt pro optimalizaci dotaz∙ na prefix.
K tomu, aby bylo mo₧no efektivn∞ zodpovφdat dotazy s podmφnkami na prefix, je t°eba v tabulce definovat jin² index. Pro sloupec XYZ typu °et∞zec znak∙ dΘlky D je t°eba pou₧φt indexov² v²raz:
CAST(XYZ AS CHAR(D))Takov² index bude t°φdit zßznamy podle ASCII uspo°ßdßnφ a bude moci b²t proto vyu₧it pro optimalizaci podmφnek na prefixy. Mß-li hledßnφ podle tohoto indexu nerozliÜovat velikost pφsmen (ignorovat case senzitivitu), musφ tomu odpovφdat i indexov² v²raz:
CAST(XYZ AS CHAR(D) COLLATE IGNORE_CASE)
Pokud se n∞kter² °et∞zcov² sloupec tabulky pou₧φvß jak v podmφnkßch s rovnostmi Φi nerovnostmi tak i v podmφnkßch na prefix, pak pro efektivnφ vyhodnocenφ takov²ch dotaz∙ je nutno vybavit tabulku dv∞ma indexy.
![]() | Informace o optimalizaci dotazu | ![]() | Indexy k databßzov²m tabulkßm | Použitφ index∙ neobsahujφcφch hodnoty NULL | ![]() |