sql | leecode 1147 |即时事务配送II | sql 优化

sql 有时候还是挺有意思的,有时候不只是crud
下面来看一道sql 题,第一个题解能跑完,但是超时

浮躁的人总是很难看的进去,有时候孤单又在所难免,所以啊 要继续坚持,原来中学老师讲的那句,要耐住寂寞,是任何时候适用

首先要 确定一个用户是在首单完成即时订单的,然后统计所有用户

sql 复制代码
select round(order_date = customer_pred_delivery_date) / count(*) *100 , 2) as immediate_percentage
from Delivery as d
where (customer_id , order_date) in 
(select customer_id, min(order_date) from Delivery gtoup by customer_id);
bash 复制代码
# 用join 代替子查询
#  为什么join 会比多次 查询效率高呢?
#  join 会把多张表整合,然后一次扫描处理所有的表,而多次查询会进行多次扫描,多次IO操作

#可读性提高了,那么维护性也自然提高了。 使用join明显的可以清晰的表达查询意图和逻辑,易于阅读和理解
#然后扩展性也提高了,join 操作上面也讲了,可以方便添加更多的连接条件和连接表,实现更复杂的查询逻辑。
sql 复制代码
select round(sum(order_date) = customer_pref_delivery_date) / count(*) *100 ,2) as immediate_percentage
from Delivery as d 
join(select customer_id, min(order_date) as min_order_date from Delivery group by customer_id) as min_dates on d.customer_id = min_dates.customer_id and d.order_date = min_dates.min_order_date;

贴张图,讲一下常见都有哪些优化

bash 复制代码
# 优化sql 的常见方式有:
#1.选合适的字段属性,从分配的空间、到采用数值型数据替代文本数据,如省份、性别
#2.使用join 替代 子连接  原因上面也已经讲了。
#3.使用union 替代手动创建临时表
#4.事务,怎么理解呢?就像使用命令的时候  同时 && 必然前面出现意外后面的语句是无法执行的,当sql复杂起来,比如设计子查询、连接、联合等,把系列的sql语句用一条或者几条sql 处理 
BEGIN;
  INSERT   INTO   salesinfo   SET   customerid=14;
  UPDATE   inventory   SET   quantity =11   WHERE   item='book';
COMMIT;
begin 表示开始,commit 表示结束。
#5. 锁定表  又挺矛盾的,需要事务,但是又认为开销大,所以上表
尽管事务是维护数据库完整性的一个非常好的方法,但却因为它的独占性,有时会影响数据库的性能,尤其是在很大的应用系统中。由于在事务执行的过程中,数据库将会被锁定,因此其它的用户请求只能暂时等待直到该事务结束。如果一个数据库系统只有少数几个用户来使用,事务造成的影响不会成为一个太大的问题;但假设有成千上万的用户同时访问一个数据库系统,例如访问一个电子商务网站,就会产生比较严重的响应延迟。
#6.使用外键
锁定表的方法可以维护数据的完整性,但是它却不能保证数据的关联性。这个时候我们就可以使用外键。
#优化索引
#优化查询语句
相关推荐
不羁。。23 分钟前
【撸靶笔记】第七关:GET - Dump into outfile - String
数据库·笔记·oracle
yangchanghua1112 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance2 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai2 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白2 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务2 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
冒泡的肥皂6 小时前
MVCC初学demo(一
数据库·后端·mysql
.Shu.7 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
yatingliu20197 小时前
HiveQL | 个人学习笔记
hive·笔记·sql·学习
薛晓刚9 小时前
当MySQL的int不够用了
数据库