Sembra essere noto che per trovare una risposta a una query su un database relazionale D , occorre tempo | D | | Q | e non ci si può liberare dell'esponente | Q | .
Dato che può essere molto grande, ci chiediamo perché i database funzionino affatto nella pratica.
È solo una questione delle solite query che non sono affatto grandi nelle applicazioni del mondo reale? (Quindi è interessante sapere qual è la dimensione normale delle query poste ai sistemi di database relazionali e qual è la dimensione "massima" delle query che si prevede che in pratica sia effettivamente rispondibile da un sistema DB .)
Note sull'esponente non "rimovibile"
Per dimostrare che l'esponente non è rimovibile, è possibile utilizzare una query che chiede se esiste una cricca di dimensione n nel grafico fornito dal database. Per verificare se un grafico ha un n -clique è un problema NP-completo. Inoltre, non è trattabile a parametro fisso, con parametro n . I dettagli sono disponibili, ad esempio, in
Libkin, L .: Elements Of Finite Model Theory. Springer (2004)
o
Papadimitriou, CH, Yannakakis, M .: Sulla complessità delle query del database. J. Comput. Syst. Sci. 58 (3), 407–427 (1999)
SELECT * FROM users WHERE username="abc" AND passwrod="xyz"
) sono ricerche semplici, che richiedono l'esecuzione di O (| D |). Se è presente un indice nei relativi campi del database, ci vorrà O (log | D |). Non mi occupo di database, ma non credo che query più complicate richiederebbero tempo esponenziale.