Индексы в бд
Автор Ujine13 задал вопрос в разделе Другие языки и технологии
Что такое индексирование БД и получил лучший ответ
Ответ от Голый Мужик[гуру]
Излагаю суть, не привязываясь к реализациям, чтоб понятней было. Грубо говоря, индексирование - сортировка данных по определённому набору полей заранее. Например, если у вас есть таблица Emloyee с полями Id, FirstName, LastName, Salary и индекс по полям FirstName и LastName, то при запросеselect * from Employee where (Salary > 1000) order by FirstName, LastNameто данные будут браться не из таблицы Employee, а из индекса, то есть поиск будет выполняться среди уже отсортированных данных. Выгода от использования индесксов значительна: если в неотсортированном массиве длиной N сложность поиска элемента составляет O(N), то в отсортированном - O(log(N)) и меньше (хотя, на самом деле, в СУБД применяется хеширование, при котором сложность поиска предельно приближается к O(1)). Сложность сортировки массива - O(N*log(N)), а при индексации необходимость в сортировке отпадает. По первичному ключу индекс создаётся СУБД автоматически.
база данных
Создание нечто вроде книжного оглавления или предметного указателя, чтобы можно было бы найти нужную информацию быстрее.
Тогда поиск идет не перебором, а обращением этому "оглавлению". При этом скорость поиска увеличивается в сотни и тысячи раз.
Индексирование - обход содержимого БД, обнаружение в ней информации и внесение индекса в базу данных.
Индексирование нужно для ускорения работы, кроме того, индекс упорядочивает записи.
Чтобы решить проблему поиска данных, СУБД использует файл индекс. Точно так же, как содержание книги помогает быстро найти информацию, поскольку содержит все номера страниц книги, посвященных конкретной теме, так и в базе данных, если информация, хранящаяся в колонке, индексирована, то индекс указывает на все строки, в которых хранится конкретное значение колонки.