Wydaje się, że w popularnych językach zapytań dotyczących relacyjnych baz danych możliwe jest tworzenie zapytań, które będą wymagały dużej ilości zasobów. W praktyce administratorzy baz danych zarządzają tym, ograniczając ilość pamięci na zapytanie i sprawdzając, czy w bazie danych nie ma żadnych długotrwałych zapytań. Wydaje się to raczej ad-hoc, czy istnieje rozwiązanie TCS?
Czy istnieją języki zapytań, które mogą implementować tylko wydajne zapytania?
Jeśli nie ma takich języków, czy istnieje teoretyczny powód?
Niektóre powody, dla których mógłbym oczekiwać, że takie rzeczy istnieją lub przynajmniej mają sens:
- mamy języki programowania, które zostały zaprojektowane specjalnie w celu implementacji tylko wydajnych obliczeń (zwykle z ograniczoną logiką w ich systemie typów)
- popularne języki zapytań (takie jak SQL) są już inspirowane logiką, więc użytkownicy bazy danych nie wydają się zbytnio rozważać bardziej restrykcyjnej logiki.
- niegroźny użytkownik bazy danych już próbuje przygotować zapytania, które są wykonywane szybko, więc powinniśmy oczekiwać, że te bardziej restrykcyjne języki zapytań będą utrudniać tylko szkodliwym użytkownikom.
To pytanie jest inspirowane skrzyżowaniem dwóch poprzednich pytań: