|
Тема |
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.
|
| |
|
|
|