mysql 计算列 优化_集算器如何优化SQL计算(1)动态列_MySQL

结构化计算是SQL的设计目标,常规的聚合、分组、连接等结构化计算用SQL实现没有问题。SQL的计算体系是完备的,但就方便性而言,SQL对复杂运算的考虑仍有不足。具体来讲主要表现为集合化不够彻底、对离散数据和有序运算支持不足、没有对象引用机制、动态性不充分等,造成许多计算的理解和编写都很困难。而集算器在这些方面都有所改进,可以协助SQL更自然地实现复杂计算。

当然,集算器并不能也不打算完全替代SQL。对于SQL易于描述的运算,在数据库厂商多年努力下,已经几乎做到极致,集算器不可能也没必要超越。这里列举的都是SQL体系下难以实施或实施得很繁琐的运算,配合集算器实现可以起到事半功倍的效果。

这类SQL困难的运算非常杂乱,难以系统地分类罗列,这里只挑选若干较有代表性的例子呈现。

动态列

SQL认为数据列是数据的属性,应当是静态的,因而没有提供针对列上的集合运算。这样在我们事先不知道列的信息或列很多需要通用方式处理时就会显得很麻烦。

列间统计

体育测验表结构为:姓名、短跑、长跑、跳远、铅球、…;成绩等级分为优秀、良好、及格、不及格四档,现在要统计各等级在所有项目上的人数合计。

思路很简单,把各项目成绩合并起来再分组汇总即可。SQL要用大长串的union合并各项目,写起来很繁琐。而且列数不确定时还要从数据库中动态获取列名拼接,更为复杂。

集算器支持列上的集合运算,全动态写法轻松简单:

A

1

=db.query("select * from 测验表")

2

=A1.conj(~.array().to(2,))

从第2字段的各项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值