Izpolzvane na indexi

12 отговора 476 прегледа
#1

Izpolzvane na indexi

Imam tablica na koiato edno ot poletata e ID integer primary key i vtoro koeto e
ime varchar(20) unique
Kak da napravia taka che kogato napravia select po tazi tablica bez order da izliza podredbata po vtoria index ( t.e. ime). Ima li niakakvo posochvane po koi index da se raboti?
Predvaritelno vi blagodaria!

Отговор
в отговор на Beginer #2

Re: Izpolzvane na indexi

сортирането ти е по клъстерния индех, ако нямаш такъв по физическото подреждане на записите, така че ако искаш направи си единият от индексите клъстерен и ше ти сортира по него
ама не е добра идея да се опитваш да изпускаш order by клаузата
ако ти съвпада с клъстерния индех (или някои друг индех ) и без това няма да прави нищо а ше сканира по него, обаче ше си сигурен че няма да стане грешка

Отговор
в отговор на Beginer #3

Re: Izpolzvane na indexi

ако искаш може да направиш и
SELECT *
FROM tablica WITH (INDEX =ime_index)
ше сортира по ime_index
ама пак да отбележа, според мене
SELECT *
FROM tablica order by ime
е по добро, а и плана на заявката ше е същия

Отговор
в отговор на zip #4

Re: ??????????????2

Сортрането се извършва според ORDER BY

Индексите няма НИЩО ОБЩО с РЕДА на сортиране.

Клъстерните индекси пък хептен нищо.

salle.online.bg/sig
Отговор
в отговор на Beginer #5

Re: Izpolzvane na indexi

Основна теоретична постановка в Релационните Бази данни е, че съвръра е свободен да съхранява, обработва и връща редовете в таблиците включително такива използвани за междинни резултати (като при GROUP BY, Вложени заявки и т.н.) резултатите в произволен ред.

Произволен включително и във времето.
За една и съща заявка повторена 10 пъти сървъра е в правото си да избере 10 различни подредби (с цел оптимизация)

Единствения позволен на потребителя ред е този задаван за Резултата от заявката в ORDER BY клаузата.

Ако се замислиш ще установиш, че това правило дава свободата за хиляди начини за оптимизация. Без него базите данни щяха да са безкрайно ограничени

Редактирано от salle на

Отговор
в отговор на salle #6

Re: ??????????????2

e ne taka de!!! ne e hubavo da se zablujdavat horata reshili da se uchat. Clustered index-i imat mnogo obshto s podredbata!!

Отговор
в отговор на salle #7

Re: Izpolzvane na indexi

Благодаря за мненията ви. Според всичко това си направих заключение че, е по-добре да не си с превключване на индекси. ок. Да ама при същия този казус (таблица с 2 полета от които първото е идентификатор с първичен ключ а второто е поле с имена с уникален индекс) когато направих ORDER BY IME подредбата на имената на кирилица не е коректна въпреки че, съм сложил клауза default-character-set=cp1251.
Какво да направя?

Отговор
в отговор на salle #8

Re: Izpolzvane na indexi

Благодаря за мненията ви. Според всичко това си направих заключение че, е по-добре да не си играя с превключване на индекси. ок. Да ама при същия този казус (таблица с 2 полета от които първото е идентификатор с първичен ключ а второто е поле с имена с уникален индекс) когато направих ORDER BY IME подредбата на имената на кирилица не е коректна въпреки че, съм сложил клауза default-character-set=cp1251 .
Какво да направя?

Отговор
в отговор на Beginer #9

AKo izpolvash

SQL Server 2000, triabva da nastroish predvaritelno bazata danni da ti e v poshodiast character set. TOva stava s podmiana na COllation Settings. Imashe predi takava diskusia, ei ti adresa za neia:
[линк]

Edva togava ste ti tyrsi korektno s ORDER BY.

Index-ite sa za uskorenie na bazata danni. I se usesta edva kaot natrupash desetki/stotici hiliadi zapisi. TOgava izpolzvaneto na index e podhodiasto, zastoto ti dava stabilno uskorenie pri rovichkane sortirano po tazi kolona, v koiato ti e INDEXA. Sirech rpi vsichki sluchai izpolzvai ORDER BY za sortirovka, a index-irai dadena kolona ako tablicata ti raste byrzo i dyrjish na byrz otgovor pri sortirovka.

You know that I know that you know that I don't know
Отговор
в отговор на salle #10

Re: ??????????????2

добре де , а ако няма order by
данните при проста заяка (както беше въпроса) се извличат по индеха които се посочил така че най-оптималното е да съвпадна с него, нали :)

разбира се да се опитваш да се бъркаш в работа на оптимизатора на базата само за да си подредиш резултата изобщо не е добра идея

Отговор
в отговор на Beginer #11

Re: Izpolzvane na indexi

Кажи все пак какъв сървър използваш за да не витаем в предположения

salle.online.bg/sig
Отговор
в отговор на Beginer #12

Re: Izpolzvane na indexi

Има начин - да управляваш sort-а от клиентското приложение. Но имай предвид следното:
1. Предимство - гъвкавост, динамично създаване на заявки по различни критерии и пр.
2. Недостатък (голям!) - казаното в т.1 сериозно се отразява на скоростта на изпълнение, освен това генерира ненужен мрежов трафик.

И въобще - какво толкова ти пречи клаузата ORDER BY? Според мен върши чудесна работа. Вярно, генерира известно закъснение, но какво от това?

Отговор
в отговор на salle #13

Re: Izpolzvane na indexi

Ami biah pusnal SapDB ama tam imashe dosta neshta koito neuspiah da nakaram da zarabotiat taka kakto iskah az i zatova se otkazah ot nego. Sega sam pusnal MySQL i uspiah da podredia poletata na cyrilic kakto triabva. I vse pak vi blagodaria za pomoshta!

p.s. A kakvo e vasheto mnenie za tozi SapDB?

Отговор