|
@@ -143,3 +143,28 @@
|
|
|
|
|
|
Для хранения больших объемов текста существуют типы `TINYTEXT` (255), `TEXT` (65535), `MEDIUMTEXT` (16777216) и `LONGTEXT` (4294967296). Так же эти типы
|
|
|
предоставляют возможности *полнотекстового поиска* средствами MySQL, в отличии от `CHAR` и `VARCHAR`.
|
|
|
+
|
|
|
+## Индексы
|
|
|
+
|
|
|
+**Индекс** - специальная структура данных, хранящая в себе упорядоченную (сортированную) информацию о данных в полях таблицы. SQL-базы ориентированы на
|
|
|
+хранение огромных структур данных на медленных носителях (HDD, SSD), сортировать ВСЕ данные которых неоправданно затратно по времени и ресурсам. Более того,
|
|
|
+невозможно иметь один и тот же набор данных отсортированный одновременно по разным критериям, например по фамилии и по дате рождения. Для
|
|
|
+решения этих задач и существуют индексы - они хранят отсортированные по нужным критериям *ссылки* на записи таблицы.
|
|
|
+
|
|
|
+### Поиск
|
|
|
+Одна из главных задач комьютеров в целом и СУБД в частности - быстрый поиск данных. Реляционные СУБД еще более склонны к этому, так как происходит поиск
|
|
|
+связанных данных из других таблиц.
|
|
|
+
|
|
|
+#### Поиск в несортированном наборе данных
|
|
|
+Для того, что бы найти определенную запись в наборе из **N** записей требуется до **N** операций сравнения с искомым значением, т. е. поиск перебором. Другими
|
|
|
+словами, такой поиск имеет вычислительную сложность **O(n)**, и время на него пропорционально **N**.
|
|
|
+
|
|
|
+#### Поиск в сортированном наборе данных.
|
|
|
+Для поиска в сортированном наборе данных обычно применяется двоичный поиск. Этот несложный алгоритм позволяет радикально уменьшить вычислительную сложность
|
|
|
+поиска до **O(log2(N))**, то есть для **N** = 1000 записей надо 10 сравнений, а для **N** = 2000 всего 11, **N** = 4000 - 12 сравнений.
|
|
|
+
|
|
|
+**Наличие индекса превращает несортированный набор данных в сортированный, уменьшая время запросов к СУБД**. MySQL может искать данные и без индексов, однако
|
|
|
+на больших наборах данных проще вначале создать индекс (его можно добавить в любой момент, не только когда таблица создается), а потом выполнять запросы
|
|
|
+поиска данных.
|
|
|
+
|
|
|
+
|