NLSSORT, like i optymalizacja
Ogl±dasz archiwaln± wersję tematu "NLSSORT, like i optymalizacja" z forum pl.comp.bazy-danych
Marcin Zawadzki
Witam.
Mam następuj±cy problem z baz± danych Oracle 9i.

Potrzebuję zwrócić rekordy posortowane według nazw, (sortowanie narodowe A,
ˇ, B, C, Ć .....) gdzie porównywanie odbywa się poprzez
WHERE nazwa LIKE 'co¶tam%'

Nie mogę zmusić Oracle do prawidłowego korzystania z indeksów w procesie
optymalizacji.

W najlepszym razie w przypadku indeksu NLSSORT(nazwa)  EXPLAIN PLAN wypluwa
mi INDEX FULL SCAN zamiast INDEX RANGE SCAN.

Można także skorzystać z indeksu po kolumnie i wtedy mam INDEX RANGE SCAN,
ale wówczas pojawia się sortowanie.

CZy kto¶ ma jakie¶ pomysły jak to zoptymalizować ?

MZ

Piotrek Kapczuk

Witam.
Mam następuj±cy problem z baz± danych Oracle 9i.

Potrzebuję zwrócić rekordy posortowane według nazw, (sortowanie
narodowe A, ˇ, B, C, Ć .....) gdzie porównywanie odbywa się poprzez
WHERE nazwa LIKE 'co¶tam%'

Nie mogę zmusić Oracle do prawidłowego korzystania z indeksów w
procesie optymalizacji.

W najlepszym razie w przypadku indeksu NLSSORT(nazwa)  EXPLAIN PLAN
wypluwa mi INDEX FULL SCAN zamiast INDEX RANGE SCAN.

Można także skorzystać z indeksu po kolumnie i wtedy mam INDEX RANGE
SCAN, ale wówczas pojawia się sortowanie.

CZy kto¶ ma jakie¶ pomysły jak to zoptymalizować ?


A  QUERY_REWRITE_ENABLED = TRUE w init.ora masz ?

Marcin Zawadzki
Mam.
I nic nie daje.

MZ

Lucyna Witkowska

Potrzebuję zwrócić rekordy posortowane według nazw, (sortowanie narodowe A,
ˇ, B, C, Ć .....) gdzie porównywanie odbywa się poprzez
WHERE nazwa LIKE 'co¶tam%'


A nie powinno byc raczej:
WHERE nlssort(nazwa) LIKE nlssort('co¶tam%')

Pozdrowienia,
LW

Marcin Zawadzki
Bez znaczenia jeżeli chodzi o kwestię optymalizacji ( i tak i tak nic )

MZ

Lucyna Witkowska
Musze poprawic swoja bledna odpowiedz ;-)

Mam następuj±cy problem z baz± danych Oracle 9i.
Potrzebuję zwrócić rekordy posortowane według nazw, (sortowanie narodowe A,
ˇ, B, C, Ć .....) gdzie porównywanie odbywa się poprzez
WHERE nazwa LIKE 'co¶tam%'
Nie mogę zmusić Oracle do prawidłowego korzystania z indeksów w procesie
optymalizacji.
W najlepszym razie w przypadku indeksu NLSSORT(nazwa)  EXPLAIN PLAN wypluwa
mi INDEX FULL SCAN zamiast INDEX RANGE SCAN.


Bedzie lepiej jesli da sie zamienic LIKE na cos w rodzaju
WHERE nlssort(nazwa) BETWEEN nlssort('A') AND nlssort('B')
(mozna opuscic nlssort jesli w sesji jest nls_comp='ANSI')

Można także skorzystać z indeksu po kolumnie i wtedy mam INDEX RANGE SCAN,
ale wówczas pojawia się sortowanie.


Indeks po kolumnie jest binarny, a nie leksykalny i musi wystapic
sortowanie.
Pozdrowienia,
LW

Marcin Zawadzki
Jest funkcyjny :(
MZ
Sławomir Szyszło

Bedzie lepiej jesli da sie zamienic LIKE na cos w rodzaju
WHERE nlssort(nazwa) BETWEEN nlssort('A') AND nlssort('B')
(mozna opuscic nlssort jesli w sesji jest nls_comp='ANSI')

| Można także skorzystać z indeksu po kolumnie i wtedy mam INDEX RANGE SCAN,
| ale wówczas pojawia się sortowanie.

Indeks po kolumnie jest binarny, a nie leksykalny i musi wystapic
sortowanie.


Zdaje się, że można użyć indeksu funkcyjnego:
CREATE INDEX nls_index ON my_table (NLSSORT(name, 'NLS_SORT = POLISH'));

MSSQL 2000 (MSDE) Optymalizacja do pracy lokalnej
optymalizacja zapytania MySQL, uwaga: długie ;)
Optymalna konfiguracja MySQL pod webhosting
optymalizacja zapytania - sortowanie, grupowanie
Optymalizacja zapytania SQL
optymalizacja bazy mysql
FUTFIGHTER (FW20) tu typuj na 2007-01-04
  • jorge luis pinto
  • adapter ide schemat
  • ktm 125
  • e46 dzwine wibracje podczas jazdy miedzy 2 a
  • urzad skarbowy strzelecka
  • tradzik cz 3 640
  • lotto dresy
  • rodzina wielopokoleniowa w jednym domu
  • call of duty 40A0909090A09090909wasze opinie
  • Zestawienie wypowiedzi z for dyskusyjnych • Index