Почему поиск быстрый с primary key

«Почему поиск быстрый с primary key» — вопрос из категории Базы данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Primary key обеспечивает быстрый поиск благодаря индексации. В SQLite (и большинстве БД) primary key автоматически создает clustered index, который физически упорядочивает данные на диске.

При поиске по primary key:

  1. Используется B-дерево (сбалансированное дерево поиска)
  2. Время поиска O(log n) вместо O(n) при полном сканировании
  3. Нет необходимости в дополнительных операциях JOIN или фильтрации

Пример с Room:

@Dao
interface UserDao {
    @Query("SELECT * FROM users WHERE id = :userId") // id - primary key
    suspend fun getUserById(userId: Int): User?
}

Оптимизации:

  • Автоматическое кэширование часто запрашиваемых PK
  • Минимальные накладные расходы при обновлении индекса
  • Поддержка быстрых операций CRUD