Ответ
Primary key обеспечивает быстрый поиск благодаря индексации. В SQLite (и большинстве БД) primary key автоматически создает clustered index, который физически упорядочивает данные на диске.
При поиске по primary key:
- Используется B-дерево (сбалансированное дерево поиска)
- Время поиска O(log n) вместо O(n) при полном сканировании
- Нет необходимости в дополнительных операциях JOIN или фильтрации
Пример с Room:
@Dao
interface UserDao {
@Query("SELECT * FROM users WHERE id = :userId") // id - primary key
suspend fun getUserById(userId: Int): User?
}
Оптимизации:
- Автоматическое кэширование часто запрашиваемых PK
- Минимальные накладные расходы при обновлении индекса
- Поддержка быстрых операций CRUD