К концу этой записи в блоге вы должны быть знакомы со следующим: Что такое индекс и когда его использовать. Давайте начнем.

Индекс — это отсортированный список данных, который указывает на то, где что-то существует. Другими словами, это копия выбранных столбцов данных из таблицы, в которой можно поиск быстро и эффективно. Игривый пример поможет проиллюстрировать этот момент. Давайте представим, что у Ларри и Тома есть отдельные коллекции книг о редких домашних ящерицах. Поскольку у ветеринаров нет практических знаний о редких домашних ящерицах, Ларри и Том должны понимать, как заботиться о своих ящерицах как можно тщательнее. К счастью для Ларри, вместо того, чтобы просматривать каждую страницу каждой книги о редких домашних ящерицах, чтобы найти нужное содержание, он проиндексировал полки по темам, авторам и названиям редких домашних ящериц и умеет быстро находить то, что ему нужно. Том, однако, не отсортировал свои книги о редких домашних ящерицах каким-либо особым образом, и, следовательно, он крайне неэффективен в поиске необходимой информации, которая могла бы помочь его ящерице. Ой, какая головная боль!

На базовом уровне именно так работают индексы базы данных. Индексы используются для фильтрации данных. Мы часто будем использовать SQL-запросы для получения подмножества данных из наших таблиц и можем использовать индекс для получения этой информации с высокой скоростью, по сравнению с тем, если бы мы только что использовали целочисленное значение для отслеживания этого атрибута. Индексирование кажется довольно хорошим, не так ли? Что ж, есть загвоздка. Работа — это ограниченный ресурс, и каждая часть работы, которую ваша база данных выполняет без обслуживания запросов, — это работа, которую она не может потратить на обслуживание запросов. Это может показаться очевидным, но все это имеет решающее значение при размышлении о том, что стоит индексировать. Добавление индекса к конкретной информации отлично подходит для быстрого доступа к указанной информации из нашей базы данных, то есть чтения из нашей базы данных, но может стать очень медленным при добавлении дополнительной информации в нашу базу данных с очень специфическими параметрами, то есть записи в нашу базу данных. Так как же узнать, что нужно индексировать? Как правило, нам нравится индексировать внешние ключи в наших таблицах, которые содержат информацию, которую мы часто хотим извлечь из нашей базы данных. Если вы собираетесь выполнять сортировку данных в базе данных, обязательно используйте индексацию! Это позволит вашим запросам Active Record и SQL не выполнять дополнительную работу для сортировки данных. Простой пример того, как индекс может помочь, включен в следующий запрос: Person.order(“added_at DESC”).limit(10)

Индексируя атрибут add_at в таблице Person, мы избавляем нашу базу данных от необходимости сортировать каждую строку как часть запроса. Каждая строка уже отсортирована по этому атрибуту, что позволяет нам очень быстро извлекать нужные данные.