Es scheint, dass es in gängigen Abfragesprachen für relationale Datenbanken möglich ist, Abfragen zu erstellen, für deren Beantwortung viele Ressourcen erforderlich sind. In der Praxis verwalten Datenbankadministratoren dies, indem sie die Speichermenge pro Abfrage begrenzen und nach lang laufenden Abfragen suchen, wenn die Datenbank langsamer wird. Dies scheint eher ad-hoc zu sein. Gibt es eine TCS-Lösung dafür?
Gibt es Abfragesprachen, die nur effiziente Abfragen implementieren können?
Wenn es keine solchen Sprachen gibt, gibt es dafür einen theoretischen Grund?
Einige Gründe, warum ich erwarten könnte, dass solche Dinge existieren oder zumindest Sinn machen:
- Wir haben Programmiersprachen, die speziell dafür entwickelt wurden, nur effiziente Berechnungen zu implementieren (normalerweise durch eine restriktive Logik in ihrem Typsystem).
- Beliebte Abfragesprachen (wie SQL) sind bereits von der Logik inspiriert, sodass es für Datenbankbenutzer nicht schwierig erscheint, restriktivere Logiken in Betracht zu ziehen.
- Ein nicht böswilliger Datenbankbenutzer versucht bereits, Abfragen vorzubereiten, die schnell ausgeführt werden. Daher sollten wir erwarten, dass diese restriktiveren Abfragesprachen nur böswillige Benutzer behindern.
Diese Frage ist inspiriert von der Überschneidung zweier vorheriger Fragen: