Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 05:06 09.06.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Тема Що е то "надеждност"(mysql индекси)  
Автор MapTuH (каквопъкетова)
Публикувано31.03.06 16:49



Здравейте, какво трябва да означава надежност на индекса? В php mysql admin има колонка с число даващо някаква представа за надеждноста на индекса. Но какво означава това число, кога е по-добре - когато е по-малко или когато е по-голямо? Какво изобщо означава "надеждност" на индекса?



Тема Re: Що е то "надеждност"(mysql индекси)нови [re: MapTuH]  
Автор salle (един такъв)
Публикувано31.03.06 17:29



Това ми звучи като изключително лош превод от рода на един филм по Discovery наскоро в който скоростта на самолета в българсикя превод се измерваше в .... ноти

"300 knots" беше преведено като "300 ноти". Направо ми се доповръща ама нямаше на кого да се оплача.


Я си пусни phpmyadmin-а на английски и кажи как се казва там това число.

Да не е cardinality например?



Тема Re: Що е то "надеждност"(mysql индекси)нови [re: salle]  
Автор MapTuH (каквопъкетова)
Публикувано31.03.06 17:34



Да, за "Cardinality" става дума.



Тема Re: Майко мила ....нови [re: MapTuH]  
Автор salle (един такъв)
Публикувано01.04.06 00:28



Цялата теория на релационните бази данни е изведена от теорията на множествата.

В теория на множествата се дефинира едно нещо наречено "Кардинално число" или още "мощност" на множество. За изброимо множество кардиналното число е броят на елементите в множеството.

Е когато става въпрос за кардинално число на индекс то отговаря на броя на различните стойности в индекса.

При първичния ключ например винаги е равно на броя на редовете от таблицата.

Ако пък да речем имаш индекс върху колонка Пол с допустими стойности М, Ж то въпросното кардинално число ще е равно на 2.

По принцип по-голямо "разнообразие" в стойностите на един индекс предполага по-ефективна работа на тизи индекс (защото при попадение може да се "отсеят" по-малко стойности). Това не винаги е вярно, но при равномерно разпределение на стойностите е добър ориентир за това доколко даден индекс може да е полезен.

Да наречеш това число "Надеждност" е пълна глупост!

Всъщност по-съществено е съотношението между броя на елементите и броя на уникалните елементи в индекса а не самите числа.

"Идеалното" съотношение е 1:1 какъвто е случая при Първичен Ключ или уникален индекс.

Ето ти един пример:


mysql> SELECT COUNT(*) FROM t\G
*************************** 1. row ***************************
COUNT(*): 393216
1 row in set (0.00 sec)

mysql> show index from t\G
*************************** 1. row ***************************
Table: t

Key_name: col
Column_name: col
Cardinality: 101

Това е "лош" индекс защото в него има "само" 101 уникални стойности при "цели" 393216 реда.

Ако обаче редовете в таблицата бяха примерно 125 тогава същият този индекс щеше да е "добър".

Слагав всичко в кавички защото нещата са много относителни :)

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



Редактирано от salle на 01.04.06 00:33.



Тема Re: Майко мила ....нови [re: salle]  
Авторanonimen (Нерегистриран)
Публикувано16.10.06 13:58



A kak moje da se promeni tova 4islo? V smisal okzava s 4e imam kardinalno 4oslo na baza danni zadadeno na 68 s na4alna stoinost na id 59 i kraina 127. Az oba4e iskam da importna danni, koito sa mnogo pove4e ot 68. Kak da promenia tova 4islo.
Blagodaria vi predvaritelno.



Тема Re: пиши на български ако обичашнови [re: anonimen]  
Автор salle (един такъв)
Публикувано16.10.06 18:21



.



Тема Re: Майко мила ....нови [re: salle]  
Авторнaн (Нерегистриран)
Публикувано19.10.06 21:14



>> Това е "лош" индекс защото в него има "само" 101 уникални стойности при "цели" 393216 реда.

Хмм... ти ме хвърли в размисъл..
по какъв точно начин този индекс е "лош"?

Ако приемем, че тези 393 216 реда са например за таблица Orders, а 101 на брой са клиентите за тези ордери, какво лошо има в индекса ако искаш да изкараш например всички ордери на клиент Х (който има да речем 5 000 ордера)?

За сравнение, ако имаш уникален индекс по поле "Номер на ордер", тогава ще имаш максимална кардиналност, но това ще ти помогне ли ако искаш да покажеш ордерите с номера между 70 000 и 75 000 (нека са поредни, т.е. пак 5 000 на брой). Предполагам, че скоростта за изпълнение в този случай би била горе-долу същата?

Уф, стана ми любопитно какво точно е вътрешното представяне на индексите в MySql (пък и въобще, в повечето бази как е), все трябва да е обяснено някъде, ама нещо сега точно нямам много време за това.
Може би ще да е дърво по кардиналните стойности на индексираните полета, в листата на което би следвало да са изброени "указателите" към съответните записи. Тези "указатели", ако индексът не е уникален, би следвало пак да са в някаква дървовидна структура, щото иначе не ми се мисли какво обхождане би станало при update-операциите, ако бяха свързани само в свързан списък например и този списък има много елементи:). Абе както и да е, отплеснах се нещо...




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.