2013-07-17 11 views
6

Co oznacza skanowanie niepowtarzalne, skanowanie zakresu i pomijanie? Czy możemy wyraźnie zdecydować, którego skanowania użyć? Jakie są plusy i minusy wszystkich tych skanów?Skanowanie zasięgu a unikatowe skanowanie i pomijanie skanowania

+2

Nigdy nie słyszałem o "skanowaniu unixowym" w Oracle. Chyba masz na myśli "* unikalny * skan"? I PL/SQL jest ** tylko ** używane w procedurach przechowywanych. Wszystko inne to "tylko" SQL. Ta strona może Cię zainteresować: http://use-the-index-luke.com Wszystkie operacje wykonawcze są również udokumentowane w instrukcji: http://docs.oracle.com/cd/E11882_01/server.112/e16638 /ex_plan.htm#i23461 –

+0

Tak, mam na myśli wyjątkowe skanowanie. Dzięki za wyjaśnienie, zredagowałem wpis. –

+1

[Ten rozdział] (http://docs.oracle.com/cd/E16655_01/server.121/e15858/tgsql_optop.htm#CHDFJIJA) instrukcji SQL Tuning Guide zawiera dobry opis każdej z wymienionych metod dostępu do indeksu, oraz kilka innych. –

Odpowiedz

9

Są to dość oczywiste po imieniu:

  • „unikalną” skany skanowania dla pojedynczej wartości w unikalnym indeksem.

  • Skanowanie "zakresu" rozpoczyna się od pewnej wartości początkowej i odczytuje kolejno pozycje indeksu (i, .e. Wzdłuż drzewa b), dopóki nie napotka wartości, która przebiega poza drugą wartość (wyszukiwanie pojedynczego wartość na nieunikalnym indeksie to skanowanie zakresu, BTW).

  • Skanowanie "przeskocz" używa tylko wiodących kolumn indeksu złożonego do obliczenia jego odrębnych wartości (tak więc, gdy znajdzie wartość, "przeskakuje" wzdłuż tego indeksu, aż znajdzie następny).

Każdy jest odpowiedni (i optymalny) dla danego typu dopasowania rekordu. Optymalizator SQL prawie zawsze wybiera najbardziej odpowiednie dla danej sytuacji (jeśli statystyki są aktualne).

Powiązane problemy