Il semble connu que pour trouver une réponse à une requête sur une base de données relationnelle D , il faut du temps | D | | Q | , et on ne peut pas se débarrasser de l'exposant | Q | .
Comme peut être très volumineux, nous nous demandons pourquoi les bases de données fonctionnent dans la pratique.
S'agit-il simplement du fait que les requêtes habituelles ne sont pas du tout importantes dans les applications du monde réel? (Ensuite, il est intéressant de savoir quelle est la taille habituelle des requêtes posées aux systèmes de bases de données relationnelles, et quelle est la taille "maximale" des requêtes qui devraient être effectivement répondues par un système DB dans la pratique .)
Notes sur l'exposant pas «amovible»
Pour montrer que l'exposant n'est pas amovible, on peut utiliser une requête demandant s'il existe une clique de taille n dans le graphe donné par la base de données. Vérifier si un graphe a une n -clique est un problème NP-complet. De plus, il n'est pas traitable à paramètre fixe, avec le paramètre n . Des détails peuvent être trouvés dans, par exemple,
Libkin, L.: Elements Of Finite Model Theory. Springer (2004)
ou
Papadimitriou, CH, Yannakakis, M .: Sur la complexité des requêtes de bases de données. J. Comput. Syst. Sci. 58 (3), 407–427 (1999)
SELECT * FROM users WHERE username="abc" AND passwrod="xyz"
) sont de simples recherches qui nécessitent l'exécution de O (| D |). S'il y a un index sur les champs de base de données pertinents, cela prendra O (log | D |). Je ne suis pas dans les bases de données, mais je ne pense pas que les requêtes plus compliquées prendraient un temps exponentiel.