Parece que en los lenguajes de consulta populares para bases de datos relacionales, es posible crear consultas que requerirán muchos recursos para responder. En la práctica, los administradores de bases de datos administran esto limitando la cantidad de memoria por consulta y verificando si hay consultas de larga duración si hay una desaceleración en la base de datos. Esto parece bastante ad-hoc, ¿hay una solución TCS para esto?
¿Existen lenguajes de consulta que solo pueden implementar consultas eficientes?
Si no hay tales idiomas, ¿hay alguna razón teórica para esto?
Algunas razones por las que podría esperar que este tipo de cosas existan o al menos tengan sentido:
- Tenemos lenguajes de programación que están específicamente diseñados para implementar solo cálculos eficientes (generalmente al tener cierta lógica restrictiva en su sistema de tipos)
- los lenguajes de consulta populares (como SQL) ya están inspirados en la lógica, por lo que no parece una exageración para los usuarios de bases de datos considerar lógicas más restrictivas.
- un usuario de base de datos no malintencionado ya intenta preparar consultas que se ejecutan rápidamente, por lo que deberíamos esperar que estos lenguajes de consulta más restrictivos solo obstaculicen a los usuarios maliciosos.
Esta pregunta está inspirada en la intersección de dos preguntas anteriores: