Według Immermana klasa złożoności powiązana z zapytaniami SQL jest dokładnie klasą bezpiecznych zapytań w (zapytania pierwszego rzędu plus operator zliczania): SQL przechwytuje bezpieczne zapytania. (Innymi słowy, wszystkie zapytania SQL mają złożoność w , a wszystkie problemy w mogą być wyrażone jako zapytanie SQL).Q ( F O ( C O U N T ) ) Q ( F O ( C O U N T ) )
Na podstawie tego wyniku, z teoretycznego punktu widzenia, istnieje wiele interesujących problemów, które można skutecznie rozwiązać, ale których nie można wyrazić w języku SQL. Dlatego interesujące wydaje się rozszerzenie SQL, które jest nadal wydajne. Oto moje pytanie:
Czy istnieje rozszerzenie SQL (zaimplementowane i używane w branży ), które przechwytuje (tzn. Może wyrażać wszystkie zapytania obliczalne w czasie wielomianowym i żadnych innych)?
Chcę język zapytań do bazy danych, który spełnia wszystkie trzy warunki. Łatwo jest zdefiniować rozszerzenie, które rozszerzyłoby SQL i przechwytuje . Ale moje pytania brzmią, czy taki język ma sens z praktycznego punktu widzenia, więc chcę, aby język był używany w praktyce. Jeśli tak nie jest i nie ma takiego języka, to chciałbym wiedzieć, czy istnieje powód, który sprawia, że taki język jest nieciekawy z praktycznego punktu widzenia? Na przykład, czy zapytania, które pojawiają się w praktyce, są zwykle wystarczająco proste, aby taki język nie był potrzebny?