一次成功的sql优化,2个表joinI/O 极大,大约9million

tecplot 通过数据点、坐标点绘制云图、三维云图 使用坐标点绘制二维云图或三维云图 阅读详情


原始sql:

更新#result表,更新warr_bal.I/O大的原因是CIS..trans_acd_bal数据量太大,

并且#result表的数据量并不大,且如果有重复的数据,sum出来的结果呈倍数增长。

	CREATE TABLE #scm(
		scm_no int NULL
		,amt money NULL
		)

	INSERT INTO #scm
	SELECT scm_no
		,sum(isnull(gl_amt, 0))
	FROM #result t
	INNER JOIN CIS..trans_acd_bal ta
		ON ta.gl_project = t.scm_no
	WHERE ta.gl_year = @pre_year
		AND ta.gl_month = @pre_month
	GROUP BY scm_no

	UPDATE #result
	SET warr_bal = scm.amt
	FROM #result t
	INNER JOIN #scm scm
		ON t.scm_no = scm.scm_no


修改后的sql如下:I/O小了,并且时间也减少。

循环的时候最重要的是红色的sql语句


	-----------update trans_bal from CIS..trans_acd_bal begin
	DECLARE @max_idn int
		,@min_idn int
		,@bal_amt money
		,@scm_no int

	SELECT @min_idn = isnull(min(idn), 0)
	FROM #result

	SELECT @max_idn = isnull(max(idn), 0) + 1
	FROM #result

	WHILE (@min_idn < @max_idn)
	BEGIN
		SELECT @scm_no = isnull(scm_no, 0)
			,@bal_amt = warr_bal
		FROM #result t
		WHERE t.idn = @min_idn

		IF (@bal_amt IS NULL)
		BEGIN
			SELECT @bal_amt = sum(gl_amt)
			FROM CIS..trans_acd_bal ta
			WHERE ta.gl_year = @pre_year
				AND ta.gl_month = @pre_month
				AND ta.gl_project = @scm_no

			UPDATE #result
			SET warr_bal = @bal_amt
			FROM #result t
			WHERE t.idn = @min_idn
				OR t.scm_no = @scm_no
		END

		SELECT @min_idn = min(idn)
		FROM #result
		WHERE idn > @min_idn
	END

	-----------update trans_bal from CIS..trans_acd_bal end


第二个例子:

优化前sql,2个表直接inner join I/O 异常大。

journal_entry是个大表,且有索引。

 SELECT b.dept_no
            ,max(b.dept_name) AS dept_name
    FROM journal_entry a
    INNER JOIN department_info b
            ON a.gl_department = b.dept_no
    WHERE a.gl_acct_no > 700000
    GROUP BY b.dept_no

优化后i/O降低了大概只有原来1/10的I/O,

 SELECT a.gl_department as dept_no
            ,(select max(b.dept_name) from department_info b where a.gl_department = b.dept_no)  AS dept_name
    FROM journal_entry a
    WHERE a.gl_acct_no > 700000
    GROUP BY a.gl_department


第三个例子,普通取模循环

declare @iloop int,@ibatch int
SET @iloop = 0

	SELECT @ibatch = (count(*) / 200000) + 1
	FROM #pay_tmp

	WHILE @iloop < @ibatch
	BEGIN
		EXEC (
				"
		UPDATE #pay_tmp
		SET payment = payment + pay_amt
		FROM #pay_tmp a1701250030(index id_1)
		INNER JOIN #temp_pay b(index id_1)
			ON a1701250030.order_no = b.order_no
				AND a1701250030.order_type = b.order_type
		WHERE abs(isnull(a1701250030.order_no, 0)) % @ibatch = @iloop
		"
				)

		EXEC (
				"
		DELETE #temp_pay
		FROM #pay_tmp a1701250031(index id_1)
		INNER JOIN #temp_pay b(index id_1)
			ON a1701250031.order_no = b.order_no
				AND a1701250031.order_type = b.order_type
		WHERE abs(isnull(a1701250031.order_no, 0)) % @ibatch = @iloop
		"
				)

		INSERT #pay_tmp(
			order_type
			,order_no
			,payment
			)
		SELECT order_type
			,order_no
			,pay_amt
		FROM #temp_pay a
		WHERE abs(isnull(a.order_no, 0)) % @ibatch = @iloop

		SET @iloop = @iloop + 1
	END

第四个例子:old sql update 太大,为降低I/O,增加临时表。

old sql 每个都join 去sum,所以I/O 太大

UPDATE #result
	SET w0 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 0
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w1 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 1
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w2 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 2
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w3 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 3
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w4 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 4
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w5 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 5
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w6 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 6
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w7 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 7
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w8 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 8
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w9 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 9
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w10 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 10
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w11 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 11
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w12 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 12
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w13 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 13
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w14 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 14
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w15 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 15
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w16 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 16
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w17 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 17
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w18 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 18
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w19 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 19
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w20 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 20
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w21 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 21
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w22 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 22
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w23 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 23
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w24 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 24
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w25 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 25
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
		,w26 = (
			SELECT s.reqQty
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND s.idx = 26
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			)
	FROM #result r

	UPDATE #result
	SET forecast_total = (
			SELECT sum(isnull(s.reqQty, 0))
			FROM #res s
			WHERE r.cust_no = s.custNo
				AND r.group_id = s.group_id
				AND r.loc_no = s.loc_no
				AND r.sku_no = s.skuNo
				AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')
			GROUP BY s.custNo
				,s.group_id
				,s.loc_no
				,s.skuNo
				,isnull(ltrim(rtrim(s.refNo)), '')
			)
	FROM #result r

新的sql,放入临时表,把结果计算出来后,再去update

insert into  #temptable
SELECT s.custNo
	,s.group_id
	,s.loc_no
	,s.skuNo
	,isnull(ltrim(rtrim(s.refNo)), '') AS refNo
	,sum(CASE 
			WHEN s.idx = 0
				THEN s.reqQty
			END) AS w0
	,sum(CASE 
			WHEN s.idx = 1
				THEN s.reqQty
			END) AS w1
	,sum(CASE 
			WHEN s.idx = 2
				THEN s.reqQty
			END) AS w2
	,sum(CASE 
			WHEN s.idx = 3
				THEN s.reqQty
			END) AS w3
	,sum(CASE 
			WHEN s.idx = 4
				THEN s.reqQty
			END) AS w4
	,sum(CASE 
			WHEN s.idx = 5
				THEN s.reqQty
			END) AS w5
	,sum(CASE 
			WHEN s.idx = 6
				THEN s.reqQty
			END) AS w6
	,sum(CASE 
			WHEN s.idx = 7
				THEN s.reqQty
			END) AS w7
	,sum(CASE 
			WHEN s.idx = 8
				THEN s.reqQty
			END) AS w8
	,sum(CASE 
			WHEN s.idx = 9
				THEN s.reqQty
			END) AS w9
	,sum(CASE 
			WHEN s.idx = 10
				THEN s.reqQty
			END) AS w10
	,sum(CASE 
			WHEN s.idx = 11
				THEN s.reqQty
			END) AS w11
	,sum(CASE 
			WHEN s.idx = 12
				THEN s.reqQty
			END) AS w12
	,sum(CASE 
			WHEN s.idx = 13
				THEN s.reqQty
			END) AS w13
	,sum(CASE 
			WHEN s.idx = 14
				THEN s.reqQty
			END) AS w14
	,sum(CASE 
			WHEN s.idx = 15
				THEN s.reqQty
			END) AS w15
	,sum(CASE 
			WHEN s.idx = 16
				THEN s.reqQty
			END) AS w16
	,sum(CASE 
			WHEN s.idx = 17
				THEN s.reqQty
			END) AS w17
	,sum(CASE 
			WHEN s.idx = 18
				THEN s.reqQty
			END) AS w18
	,sum(CASE 
			WHEN s.idx = 19
				THEN s.reqQty
			END) AS w19
	,sum(CASE 
			WHEN s.idx = 20
				THEN s.reqQty
			END) AS w20
	,sum(CASE 
			WHEN s.idx = 21
				THEN s.reqQty
			END) AS w21
	,sum(CASE 
			WHEN s.idx = 22
				THEN s.reqQty
			END) AS w22
	,sum(CASE 
			WHEN s.idx = 23
				THEN s.reqQty
			END) AS w23
	,sum(CASE 
			WHEN s.idx = 24
				THEN s.reqQty
			END) AS w24
	,sum(CASE 
			WHEN s.idx = 25
				THEN s.reqQty
			END) AS w25
	,sum(CASE 
			WHEN s.idx = 26
				THEN s.reqQty
			END) AS w26
	,sum(s.reqQty) as wall
FROM #res s
GROUP BY s.custNo
	,s.group_id
	,s.loc_no
	,s.skuNo
	,isnull(ltrim(rtrim(s.refNo)), '')

UPDATE #result
SET w0 = s.w0
	,w1 = s.w1
	,w2 = s.w2
	,w3 = s.w3
	,w4 = s.w4
	,w5 = s.w5
	,w6 = s.w6
	,w7 = s.w7
	,w8 = s.w8
	,w9 = s.w9
	,w10 = s.w10
	,w11 = s.w11
	,w12 = s.w12
	,w13 = s.w13
	,w14 = s.w14
	,w15 = s.w15
	,w16 = s.w16
	,w17 = s.w17
	,w18 = s.w18
	,w19 = s.w19
	,w20 = s.w20
	,w21 = s.w21
	,w22 = s.w22
	,w23 = s.w23
	,w24 = s.w24
	,w25 = s.w25
	,w26 = s.w26
	,forecast_total = s.wall
FROM #result r
INNER JOIN #temptable s
	ON r.cust_no = s.custNo
		AND r.group_id = s.group_id
		AND r.loc_no = s.loc_no
		AND r.sku_no = s.skuNo
		AND isnull(ltrim(rtrim(r.ref_no)), '') = isnull(ltrim(rtrim(s.refNo)), '')



V.PhyloMaker实战:从物种列表到维管束植物系统发育树的完整流程 本文详细介绍了使用V.PhyloMaker工具包,从物种列表快速构建维管束植物系统发育树的完整实战流程。内容涵盖R包安装、物种名标准化、核心函数phylo.maker的三种构建方案选择、结果树的可视化与导出,以及与picante包的联动分析,为生态学和生物地理学研究提供了高效解决方案。 阅读详情

相关推荐

PCRNet: Point Cloud Registration Network using PointNet Encoding

PCRNet算是在ModelNet40这种object-centric数据集上用deep-learning做配准最好入手的一篇文章了,整体架构涉及简洁明了,一句话描述就是简单粗暴,话不多说,直接上网络架构图: Work Flow: 首先对输入source (N×3N \times 3N×3)与template (M×3M \times 3M×3)进行PointNet操作,即MLP + max-pooling后,分别得到描述各自点云的维度为1024的global feature vector:Φ(PS).

dloading7的博客 1647

MySql中,join 语句怎么优化?

既然每次从驱动表取数据比较耗时,那我们每次从驱动表取一批数据放到内存中,然后对这一批数据进行匹配操作。这批数据匹配完毕,再从驱动表中取一批数据放到内存中,直到驱动表的数据全都匹配完毕批量取数据能减少很多IO操作,因此执行效率比较高,这种连接操作也被MySQL采用对了,这块内存在MySQ中有一个专有的名词,叫做 join buffer,我们可以执行如下语句查看 join buffer 的大小。

qq_38470315的博客 1194

jenkins安装、打包、部署

一个可以让小白部署发布项目的软件;git 配置 一定要配置git的命令路径jenkins启动命令,一定要加这一段 -Dhudson.util.ProcessTree.disable=true一定要配置jenkins的节点,BUILD_ID和DONTKILLME 否则会导致打包后,会将运行的java程序进程也杀死创建任务SSH中执行服务器B的命令的时候,cd /opt;一定要cd 打开那个目录,否则文件无法传输过去。

学海无涯,我用JAVA 5217

mysql中的快连接_MySQL的JOIN(四):JOIN优化实践之快速匹配

这篇博文讲述如何优化扫描速度。我们通过MySQL的JOIN(二):JOIN原理得知了两张表的JOIN操作就是不断从驱动表中取出记录,然后查找出被驱动表中与之匹配的记录并连接。这个过程的实质就是查询操作,想要优化查询操作,建索引是最常用的方式。那索引怎么建呢?我们来讨论下,首先插入测试数据。CREATE TABLEt1 (idINT PRIMARY KEYAUTO_INCREMENT,typeINT...

weixin_42363141的博客 421

122、Android Camera HAL3 框架:Request、Result、Metadata 的异步管道模型

本文深入剖析了Android Camera HAL3框架中的异步管道模型,围绕Request、Result和Metadata三个核心要素展开。作者通过实际案例(黑屏闪退问题)切入,揭示了异步模型中常见的帧序错乱陷阱。文章详细阐释了三个角色的交互机制,指出HAL3采用生产者-消费者模式的关键特征:Request与Result一一对应但不保证顺序。针对开发实践,总结了三个必须加锁的场景和回调函数的锁使用禁忌,并给出解决帧序问题的具体方案(独立帧号生成器)。最后提出五项经验性建议,强调异步模型带来的灵活性与复杂性

sundong_81的博客 214

MATLAB库函数unwrap(相位解卷绕)的C语言实现

什么是相位解卷绕 Q = unwrap(P) Q = unwrap(P) corrects the radian phase angles in a vector P by adding multiples of ±2π when absolute jumps between consecutive elements of P are greater than or equal to the default jump tolerance of π radians. If P is a matrix, unw

业精于勤,荒于嬉 4247

优化改写两个大表关联sql

好久没更新了,也不知道天天忙个啥锤子了!!! 前段时间夜间有一个sql,晚上将数据库部分节点磁盘占满了,导致夜间部分调度失败了。早起我去查看日志定位问题,发现跑了8个多小时的sql。。。具体sql如下: INSERT INTO otemp.L_TRUCK_07 select P1.*,max(P4.LAST_AMT) LAST_AMT From otemp.L_TRUCK_06 P1 -- 1千万+ left join TVIEW.T_ITEM...

qq_42902673的博客 1540

Vue Vben Admin 登录页修改全攻略:从登录界面定制到接口对接全流程配置

方式一:修改国际化文件找到对应的语言包文件,修改和的值。方式二:直接传递文本page-description="现代化的后台管理系统模板"page-title="欢迎使用 Vue Vben Admin"从上面的代码可以看出,登录表单使用了的方式来定义表单字段,这种方式提供了极大的灵活性。如果你想要自定义表单,可以修改formSchema数组。如果你的登录需求非常特殊,现有的组件无法满足,你可以完全自定义表单。只需在login.vue中替换<template><h2>自定义登录</h2>

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 479

SQL调优案例——多表查询(left jion)的优化

有关left join慢查询的优化

yuhaomogui的博客 4375

一文看懂EMMC原理及工作过程

CMD:用于设备初始化和命令传输的双向通道, CMD信号有2种工作模式:1#:漏极开路--->用于初始化模式2#:推拉--->用于快速命令传输其中命令从eMMC主机控制器发送到eMMC设备,响应从设备发送到主机。DAT [7:0]:双向数据信号,模式包括:1(DAT0);默认情况下,通电或重置后,只有DAT0用于数据传输。DAT信号在推挽模式下工作,eMMC设备包括数据线DAT1-DAT7的内部上拉。进入4位模式后,设备立即断开线路DAT1、DAT2和DAT3的内部上拉;

Airer_00的博客 2031

激光雷达点云配准:ICP与NDT算法详解

激光雷达点云配准:ICP与NDT算法详解​ ,人工智能,计算机视觉,大模型,AI,本文深入解析激光雷达点云配准的ICP与NDT算法。阐述了点云配准基础概念与评价指标,详解ICP算法原理、流程、最优变换矩阵计算、优缺点及改进版,给出Python代码示例;同样解析NDT算法的原理、流程、模型构建、优缺点、参数选择与代码示例。还对比两者在精度、效率、鲁棒性和适用场景的差异,提供算法选择建议,介绍实际应用案例、常见问题及解决方法,探讨算法发展趋势。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 15万+

Mysql join大表优化案例

Mysql join查询的相关原理,实现,由此推出的优化策略; join大表后进行groupby操作慢sql通过临时表+join进行优化

打不死的小强lee的博客 5405

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

mysql 连接取最大值,MySQL连接两个表,另一个字段具有最大值

I have two table account and balance/---------------------\| cid | name | mobile ||---------------------|| 1 | ABC | 12345 ||---------------------|| 2 | XYZ | 98475 |\---------------------//--...

weixin_28721743的博客 576

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

两张超级大表join优化

一个简单的两表关联,SQL跑了差不多一天一夜,这两个表都非常巨大,每个表都有几十个G,数据量每个表有20多亿,表的字段也特别多。 相信大家也知道SQL慢在哪里了,单个进程的PGA 是绝对放不下几十个G的数据,这就会导致消耗大量temp tablespace,SQL慢就是慢在temp来回来回来回...的读写数据。 先创建2个测试表 t1,t2 数据来自dba_objects cr...

Chenf1934的博客 1915

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

如何应付表数据过大的查询问题?(如何尽量避免大表关联)

一般来说,对于做B/S架构的朋友来说,更有机会遇到高并发的数据库访问情况,因为现在WEB的普及速度就像火箭升空,同时就会因为高访问量带来一系列性能问题,而数据库一直是用户与商人之间交流的重要平台.用户是没有耐心忍受一个查询需要用上10秒以上的,或者更少些,如果经常出现服务器死机或者是报查询超时,我想那将是失败的项目。做了几年的WEB工作,不才,一直没有遇到过大访问量或者是海量数...

dhka8040652的博客 721

inner join 和 exists 效率_19条效率至少提高3倍的MySQL技巧

本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下:1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据:type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式。key_len列,索...

weixin_39751769的博客 590

sql调优之:join的优化

一、join的原理 mysql都是使用(Nested Loop )循环套嵌的方式实现join的,用小表做驱动表、大表作为匹配表,开销会小点。 Nested Loop 是有三种的:Simple Nested-Loop Join、Index Nested-Loop Join、Block Nested-Loop Join。这里介绍一下最简单,大概了解一下join的原理。 Simple Nested-Loop Join: 以左边的r表作为驱动表,每次从中取一条取匹配表中查,驱动表每次加载一次就要去匹配表中查,如果驱

norminv的博客 6700

【数据库】join SQL语句原理优化

join sql

芝兰生于深谷,不以无人而不芳 1291

Sql优化_Join

1.join 基本语法 select * from table1 inner join table2 on condition select * from table1 left join table2 on condition select * from table1 right join table2 on condition inner join:内连接(等值连接) left join:左连接 right join:右连接 inner join select user.name, user.ag.

959 1478

SQL优化

时,可能需要执行全表扫描(Full Table Scan),而不是使用索引查找,这会导致查询性能下降,尤其是在大数据集上。但是,冗余字段除了会占用更多的存储空间外,还可能导致数据不一致,更新原始字段时,需要同步更新所有冗余字段,增加了维护难度。未使用索引、对索引列进行汉书计算、表达式计算,均会导致全表扫描,增加查询时间,尤其是数据量较大时。通常更高效,因为它只返回两个表中匹配的行,减少了结果集的大小,降低了后续处理的开销。返回左表的所有行,即使右表没有匹配项,结果集可能更大,增加了处理负担。

XHU1ZTg0的博客 861

SQL中的JOIN该如何优化

数据库JOIN操作优化指南(145字) JOIN操作是数据库查询的核心,优化需多维度策略:1)优先使用INNER JOIN,避免LEFT JOIN导致数据膨胀;2)遵循"小表驱动大表"原则优化连接顺序;3)为JOIN列创建复合索引,包含WHERE和SELECT字段;4)通过执行计划分析避免临时表和文件排序;5)大数据量时采用分区表或分库分表;6)调整数据库参数如join_buffer_size。典型优化案例显示,合理索引+SQL重写可将5秒查询降至0.1秒,扫描行数减少99%。建议结合E

学习Java技术栈 1149

SQL 优化(四):合理使用 join

该文章对 join 查询的三种算法做了分析,并给出了 join 语句的使用建议

黄晓宇的博客 5258

SQL 优化四: 如何使用 join

SQL 优化四: 如何使用 join

云满笔记 378

SQL数据库使用JOIN的优化方法

很早以前,也是一提到SQL Server,就觉得它的性能没法跟Oracle相比,一提到大数据处理就想到Oracle。自己一路走来,在本地blog上记录了很多优化方面的 post,对的错的都有,没有时间系列的整理出来,这篇文章将join方法的概念稍微整理在一起,给大家个参考。通过查资料了解里面提到的各种概念,在实 际中不断验证总结,完全可以对数据库一步步深入理解下去的。  我只对SQL Server

wenbingcai的专栏 805

从MySQL JOIN 算法角度看如何优化SQL

在做MySQL的SQL优化时,如果只涉及到单表查询,那么大部分慢SQL都只需从索引上入手优化即可,通过添加合适的索引来消除全表扫描或者排序操作,执行效果,大概率能实现质的飞跃。然而,在实际生产中,除了单表查询,更多的是多个表的联合查询,这样的查询通常是慢SQL的重灾区,查询速度慢,且使用服务器资源较多,如果能将这类SQL优化掉,那必将大大减轻数据库服务器压力。现在,咱就通过多表关联内部数据操作的角度,看看如何进行SQL优化。至此,对于想学习SQL优化的你,功力是不是又有长进了。

京东科技开发者 931
上一篇: synchronized 关键字可修饰 object和方法
下一篇: ETL工具
wangliwei4321
博客等级 码龄18年 3粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值