web接口排队访问 子查询where条件字段搜索域 2016.08.17回顾

30 篇文章 0 订阅
2 篇文章 0 订阅

1、昨天尝试想实现一个接口同一时间只能有一个调用,查了点儿资料,开始想的是设置一个全局公有变量,调用开始一个数值,调用结束另一个数值,实际上还是有问题的,因为不是原子级别的,因为有可能两个请求同时发生,都检测都那个变量是可以调用的状态,那么有可能同时就跑起了2个变量,洋神说简单的实现是加锁,python的threading的lock,分布式锁有一个redislock

2、但是后来我考虑到将来的业务需求,这种同一时间只能一个调用是不满足激增的业务需求的,所以我决定彻底改成支持并发调用的,要支持并发调用,核心的一点就是我那个SQL的问题,因为SQL有大量的临时表,我将临时表都写成了子查询,那些复杂的变量计算也不需要建一个临时表(效率低下),而是一些子查询就可以解决,这样就生成了一条800多行的SQL语句,果然是一条SQL语句实现一个功能啊,在写这条SQL语句的时候,我又发现了一点儿SQL的注意事项(SQL虽然简单,但是看来我离登顶还有一段距离),就是select (select ...FROM B where field = A.field) AS field_name FROM A这种查询,红色括号中是where是可以引用A中的某个字段,但是如果B也是一个子查询,那里面的where语句就不能引用A.field了,因为这个是回溯到上一层select的FROM去找,而这个本身是FROM后面的子查询,所以不能这样写,这里可以做个试验,...的地方在写一个子查询引用FROM B后面的字段,但是再和更上一层有相同的别名该如何处理呢?这个需要试验!

3、union all和union老是记不住,可以像这样去记忆,all会多一些,所以包括了重复字段,而非all要少一些,所以去掉了重复字段

4、昨天差不多就是干一个事就是改核心SQL,然后吹了哈牛,帮助同事解决了下问题,视图逻辑方面写了一点点

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值