在关系数据库的流行查询语言中,似乎可以创建需要大量资源来回答的查询。在实践中,数据库管理员通过限制每个查询的内存量并检查是否存在长时间运行的查询(如果数据库速度变慢)来进行管理。这似乎是临时的,是否有TCS解决方案?
是否存在只能实现高效查询的查询语言?
如果没有这种语言,是否有理论上的原因?
我可能希望这类事物存在或至少存在的一些原因是有道理的:
- 我们有专门设计用于仅实现有效计算的编程语言(通常通过在其类型系统中使用一些限制性逻辑)
- 流行的查询语言(例如SQL)已经受到逻辑的启发,因此对于数据库用户来说,考虑使用更多限制性逻辑似乎并不困难。
- 一个非恶意数据库用户已经尝试准备快速执行的查询,因此我们应该期望这些限制性更强的查询语言只会阻碍恶意用户。
这个问题的灵感来自于前面两个问题的交集:
1
这难道不是描述复杂性的主题吗?它们具有针对各种复杂性类别的查询的语言特征。
—
卡夫
描述性复杂性绝对是编程语言进行高效计算的重要组成部分和指南。但是我不认为说“描述性复杂性使用逻辑”和“查询数据库使用逻辑”这么简单。特别是对于DC来说,查询大小似乎是固定的,而'n'则来自那些查询接受的有限结构的大小。在数据库中,实际上查询大小是可变的,数据库也是可变的,或者可能是固定的参数。
—
Artem Kaznatcheev
变量查询也有结果,它们不像模型检查和众所周知的复杂性类之间的匹配那样令人震惊。有限模型理论的广阔领域(描述复杂性也是其中的一部分)具有许多与数据库直接相关的可表达性结果。毕竟,数据库几乎都是完全有限的模型理论结构。
—
马克·哈曼
我没有考虑过这种对应关系。我添加了有限模型理论标签。如果您或@Kaveh想详细说明您的意见,并且知道如何从有限模型理论的描述复杂性中采用特定的结果来产生这种查询语言,那么我真的很想看到这个答案!
—
Artem Kaznatcheev