SQL字段拆分优化
网络编程 2021-07-05 13:43www.168986.cn编程入门
sql优化做的好,对程序的运行速度有很大的帮助,本篇文章给大家介绍sql字段拆分优化,需要的朋友一起来学习吧。
今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL语句如下
SELECT SO_Order.fdate , SO_Order.fsn FROM so_order INNER JOIN so_orderitem ON CHARINDEX(so_Orderitem.fid, SO_Order.fid) >= 1 WHERE so_order.FOrderDate = '2015-09-06'
语句不算复杂,只是执行比较慢,狼蚁网站SEO优化是关于这SQL语句的一些信息
--1.SQL执行203条数据
--2.耗时12秒
--3.so_order表的fid字段是字符串集合,
--由1-2个字符串组成,用','分隔
SELECT COUNT() FROM SO_Order WHERE so_order.FOrderDate = '2015-09-06'--24 SELECT COUNT() FROM so_Orderitem--414154
通过分析执行计划,so_order和so_orderitem走嵌套循环是正确的,查询的瓶颈是在so_orderitem的索引
扫描上。,我们要通过改写SQL,达到so_orderitem走索引查找的目的。
将so_order表的fid字段拆分成2个字段,然后union all成一个结果集,再和so_orderitem关联,即可让so_orderitem表走索引查找。
改写的SQL如下
;WITH x0 AS ( SELECT fdate , fsn , LEFT(fid, CASE WHEN CHARINDEX(',', fid, 1) = 0 THEN 0 ELSE CHARINDEX(',', fid, 1) - 1 END) AS fid FROM so_order WHERE FOrderDate = '2015-09-06' UNION ALL SELECT fdate , fsn , RIGHT(fid, LEN(fid) - CHARINDEX(',', fid, 1)) AS fid FROM so_order WHERE FOrderDate = '2015-09-06' ) SELECT SO_Order.fdate , SO_Order.fsn FROM x0 so_order INNER JOIN so_orderitem ON so_Orderitem.fid = SO_Order.fid
狼蚁网站SEO优化是SQL改写后,网友的反馈截图
改写后SQL的执行计划如下
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程