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.使用外键
锁定表的方法可以维护数据的完整性,但是它却不能保证数据的关联性。这个时候我们就可以使用外键。
#优化索引
#优化查询语句
相关推荐
wno7045 小时前
postgresSQL压缩版安装与基本命令
数据库·postgresql
聚美智数7 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
瀚高PG实验室8 小时前
瀚高数据库常用系统表查询入门指南(附常用SQL)
数据库·sql·postgresql·瀚高数据库
ben9518chen8 小时前
mysql数据库基本操作
数据库·mysql
2603_965148118 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
土豆.exe8 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
缓慢更新9 小时前
表单引擎的存储建模:宽表与文档库的取舍
运维·服务器·网络·数据库·低代码·oracle·适配器模式
Web3&Basketball10 小时前
实测Gemini4Argon:ERQA 87%登顶长程任务榜
数据库·python·大模型·多模态·gemini·长上下文·推理优化
xiaogai_gai11 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
注塑机数据采集联网11 小时前
注塑机数据采集网关对接MES系统数字化技术方案
大数据·网络·数据库·物联网·数据挖掘·数据分析