|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
Индекси
|
|
Автор | lele (Нерегистриран) |
Публикувано | 01.11.02 09:48 |
|
Здр:-)
Чудех се има ли някакви по-специфични правила или препоръки когато в една таблица се задава кои колони трябва да са key или index. Защото е много лесно да направиш всичко което имаш индекс, но дали това е правилно?
| |
Тема
|
Re: Индекси
[re: lele]
|
|
Автор |
voyager (бастун) |
Публикувано | 01.11.02 10:04 |
|
Хм, отдавна не бях поствал тука, най-после нещо достатъчно просто, за да се включа . Начи сега, хич не е най-лесно да се наблъскат индекси навсякъде, защото:
1. При всяка операция ти се добавя, чете или ъпдейтва освен данните и индекса, свързан с тях. Това губи време.
2. Индексите заемат място. Особено в по-малки таблици понякога заемат относително много място. В моя форум доскоро индексния файл беше по-голям от файла с данните.
Та затва индекс се слага по полетата, по които се очаква да се търси. По-задълбочено обяснение на последното понятие, вервам, ще ти дадат другите от клуба .
It`s more fun to compute
| |
|
няма смисъл да се индексират полета от типа "пол" да кажем, където има две стойности...и дори и три да са пак няма смисъл....
няма смисъл, да се индексира поле от тип текст, ако ще се търсят части от полето...демек ако ще търсиш ключови думи и те са подредени в едно поле и разделени със запетайки да кажем...индекса с нищо няма да ти облекчи живота...
| |
Тема
|
Re: Индекси
[re: voyager]
|
|
Автор | lele (Нерегистриран) |
Публикувано | 01.11.02 11:11 |
|
мда, имам пропуск. Нямах предвид индекси абсолютно навсякъде, а само там където ще се търси. Явно е нужно, и отговорът на въпроса ми е: да, там където ще се търси слагай индекси, така ли?:-))
| |
Тема
|
Re: Индекси
[re: lele]
|
|
Автор |
Topбaлaн (любопитко) |
Публикувано | 01.11.02 11:53 |
|
ако ще търсиш в поле в което има малко на брой стойности няма смисъл да индексираш
ако ще търсиш части от полето също няма смисъл
сигурно и други случай ще има
освен това
ако повече ще тъпчеш и триеш в тази таблица, отколкото ще търсиш
хептен няма смисъл да индексираш....
въобще
баланс
зависи колко ти е натоварена таблицата и базата данни и т.н.
аз имам як сървър, много място и малко натоварване - никакво значение няма колко съм индексирал и къде.....
| |
|
Като за начало индексирай само полетата които са в WHERE клаузата и то ако за цифрови.
После можеш да си вземеш книгата на Пол ДюБоа "MySQL" и да прочетеш от там "Оптимизация на заявките". За индексите пише и в официалната документация. Има едно "How mysql optimizes....." - много полезна информация можеш да получиш от там.
Виж другите какво са писали по-въпроса. Мога да допълня, че "не е хубваво" да индексираш стрингове които са дълги...
Можеш и опитно(по емпиричен път - както казваше един доцент) да видиш как се променя производителността в зависимост от идексирането на някое поле.
__________________________________
Пътят към ада е осеян с добри намерения
| |
|
...като си има много добро другарче.
В MySQL това е EXPLAIN
EXPLAIN SELECT .... и разказва подробно дали и какви индекси ще се използват.
| |
Тема
|
Re: Индекси
[re: lele]
|
|
Автор |
salle (Един такъв) |
Публикувано | 02.11.02 22:38 |
|
Има мнооооого писания по въпроса кое има смисъл да се индексира и кое не и кога.
Всичко обаче се свежда до това, че оптимизираш конкретна заявка. И въпросът, който трябва да си задаваш - ТАЗИ заявка може ли да използва Индекс и какъв?
Гадно примерче:
1. SELECT .... WHERE col_a + 1 > 2;
2. SELECT ... WHERE col_a > 2 - 1;
Виждаш ли разликата?
...
2. може да използва индекс пък 1. НЕ може.
Тъй, че мисли. Много.
Наздраве
| |
Тема
|
Re: Индекси
[re: salle]
|
|
Автор |
Draco (Огън и жупел) |
Публикувано | 03.11.02 21:48 |
|
Ами... В Oracle има нещо, наречено function-based index, чрез което и заявка 1 може да ползва индекс.
Като цяло не зная как различните RDBMS организират и използват индексите, но съм съгласен с теб, че индекси се правят за оптимизиране на конкретна заявка - най-добре е да се прегледат най-често използваните заявки и да се направят походящите за тях индекси...
Nihil tam munitum quod non expugnari pecuna possit
| |
|
за дългите стрингове си има решение - индексираш само първите n символа от стринга
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|