What if an SQL Statement Returned a Database?

2023年12月01日
  • 简介
    每个SQL语句都限制返回单个可能非规范化的表,这个设计决策有着深远的影响。首先,对于数据库用户而言,会导致慢查询性能、长查询结果传输时间、SQL在Web应用程序和对象关系映射器中的可用性问题。其次,对于数据库架构师而言,在设计查询优化器时会导致逻辑(代数)连接枚举、中间结果材料化的内存消耗和物理运算符选择的后果。因此,整个查询优化栈都受到这个设计决策的影响。本文认为应该放弃单表限制,将SELECT子句扩展为支持返回结果数据库的关键字RESULTDB。我们的方法具有明确的语义,即我们扩展的SQL返回所有表的子集,仅包含传统(单表)查询结果集中的那些元组,但不通过连接进行任何非规范化操作。我们的SQL扩展是向下兼容的。此外,我们讨论了我们方法的惊人长列表的好处。对于数据库用户而言,应用程序代码更简单、更易读,查询性能更好,查询结果更小,查询结果传输时间更短。对于数据库架构师而言,我们介绍了如何利用现有的闭源系统以及更改开源数据库系统来支持我们的功能。我们提出了一些算法,将我们的功能集成到闭源和开源数据库系统中。我们展示了一个有前途的初步实验研究。
  • 图表
  • 解决问题
    拓展SQL查询语句的返回结果,解决单表查询限制带来的性能问题和可读性问题
  • 关键思路
    通过添加'RESULTDB'关键词扩展SELECT语句,支持返回结果数据库,避免通过JOIN进行去规范化操作,提高查询性能和可读性
  • 其它亮点
    该方案可以使应用代码更简单易读,提高查询性能和结果传输速度,同时可以通过算法将该功能集成到闭源和开源数据库系统中,作者进行了初步实验并获得了良好结果
  • 相关研究
    相关研究包括传统SQL查询优化、数据库系统性能优化等
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论