SQL Server 使用join all优化 or 查询速度

作者:苗启源 时间:2024-01-26 09:11:37 

比如:,master,test, 表示 该用户为 test 的下级代码,test登录后可以看到 test名下的业务和所有下级代理的业务。相关表的结构如下:


user表 大约10万条记录
|-uid-|-user-|----site------|
| 1 | test | ,master,   |
| 2 | user | ,master,test,|

product表 大约30万条记录
|-pid-|-product-|-puser-|
| 1 | order01 | test |
| 2 | order02 | user |
| 3 | order03 | user |

优化前的SQL语句如下:


select * from product as p left join user as u on p.puser=u.user where user='test' or site like '%,test,%'

不使用 or 单独查询时,都不超过100毫秒,排除索引的问题。既然单个没问题,两种结果不存在重复记录,可以考虑 join all 优化。

优化后的语句如下:


select * from product where pid in (
 select pid from product where user='test' join all (
   select pid from product as p left join user as u on p.puser=u.user where site like '%,test,%'
 )
)

用户A名下共有4000+个业务,优化前 优化前11359毫秒,优化后621毫秒
用户B名下共有12个业务,优化前 优化前10359毫秒,优化后78毫秒

来源:http://www.miaoqiyuan.cn/p/sql-join-all

标签:SQL,Server,join,all
0
投稿

猜你喜欢

  • Javascript typeof与instanceof的区别

    2024-06-07 15:53:47
  • python的变量和简单数字类型详解

    2021-01-10 15:34:40
  • 在VSCode中搭建Python开发环境并进行调试

    2021-09-20 23:19:13
  • Go语言包和包管理详解

    2023-07-21 15:51:03
  • Python os库常用操作代码汇总

    2021-04-17 04:07:51
  • pytorch常用函数定义及resnet模型修改实例

    2022-09-18 08:19:19
  • 在Laravel 中实现是否关注的示例

    2023-11-14 15:22:57
  • Python实现的删除重复文件或图片功能示例【去重】

    2023-12-25 00:49:07
  • Python中的列表知识点汇总

    2021-06-01 05:00:50
  • JavaScript实现的反序列化json字符串操作示例

    2024-04-10 10:46:01
  • 解决pycharm 格式报错tabs和space不一致问题

    2022-10-12 11:36:12
  • 深入理解python中sort()与sorted()的区别

    2021-08-17 11:46:49
  • python 虚拟环境的创建与使用方法

    2022-11-09 18:21:50
  • Go语言算法之寻找数组第二大元素的方法

    2023-06-24 16:19:03
  • Python Opencv轮廓常用操作代码实例解析

    2023-01-03 08:46:59
  • Vue+Express实现登录状态权限验证的示例代码

    2024-05-13 09:11:49
  • MySQL数据库的主从同步配置与读写分离

    2024-01-20 17:50:58
  • Go语言开发kube-scheduler整体架构深度剖析

    2024-04-28 09:17:20
  • python目录操作之python遍历文件夹后将结果存储为xml

    2023-09-23 13:04:13
  • 理解和使用Oracle 8i分析工具LogMiner

    2010-07-16 13:22:00
  • asp之家 网络编程 m.aspxhome.com