Кажется, известно, что для того, чтобы найти ответ на запрос по реляционной базе данных , нужно время , и невозможно избавиться от показателя степени,
Поскольку может быть очень большим, мы задаемся вопросом, почему базы данных вообще работают на практике.
Является ли это просто вопросом обычных запросов, которые вообще не велики в реальных приложениях? (Тогда интересно знать, каков обычный размер запросов, предъявляемых к системам реляционных баз данных, и каков «максимальный» размер запросов, которые, как ожидается, будут эффективно отвечать системой БД на практике .)
Заметки об экспонентене "съемный"
Чтобы показать, что показатель степенине является съемным, можно использовать запрос, спрашивающий, существует ли клика размера в графе, заданном базой данных. Проверить, имеет ли граф клик, является NP-полной задачей. Более того, он не является трактуемым с фиксированным параметром, с параметром . Подробности можно найти, например, в
Libkin, L .: Элементы теории конечных моделей. Springer (2004)
или
Papadimitriou, CH, Yannakakis, M .: О сложности запросов к базе данных. J. Comput. Сист. Sci. 58 (3), 407–427 (1999)
SELECT * FROM users WHERE username="abc" AND passwrod="xyz"
) - это простой поиск, для выполнения которого требуется O (| D |). Если в соответствующих полях базы данных есть индекс, он займет O (log | D |). Я не разбираюсь в базах данных, но не думаю, что более сложные запросы будут занимать экспоненциальное время.