存储过程中Sql 语句查询速度优化 某例
之前的SQL语句如下,查询很慢,6分钟多都没有结果显示,一开始我以为是6张表联合查询带来的速度慢的问题。
后来发现因为PO_D.ORDNO与PO_H.ORDNO相同,把绿色部分替换为紫色的部分,
把PO_D替换为PO_H,10秒钟就能查询出来
PS:PO_D中101401笔数据,PO_H中51341笔数据。
虽没有想明白替换之后提速到如此之快仅10秒,与6分钟未出结果差异太大,但毋庸置疑的是应该以数据量少的表
作相关外键查询是可以提高速度的。所以在写SQL语句时注意此处。
SELECT (SELECT DEPT_CODE from AM_EMPLOYEE WHERE EMP_NO=PO_H.APPLICANT) AS DEPT_CODE,
(SELECT LOGIN_NAME from AM_EMPLOYEE WHERE EMP_NO=PO_H.APPLICANT) AS LOGIN_NAME,
PO_D.FPRNO,
PO_D.ORDNO,
PO_H.MDATE,
PO_T.ITDSC,
PO_T.ITEMSPEC,
PO_D.UMORD,
PO_D.ACTQY,
PO_D.POISQ,
PV.VENDOR,
PV.VNDNAM,
PO_H.CURCY,
PO_D.UNITP,
PO_T.ECDNO,
PC_PACN_LIST.PRICE,
(PC_PACN_LIST.PRICE-PO_D.UNITP) AS BALANCE
from
IPPOHM AS PO_H,
IPPODM AS PO_D,
IPAVM AS PV,
IPPOTM AS PO_T,
PC_PACN_LIST
WHERE
PO_D.ORDNO = PV.VORDNO
AND
PO_H.ORDNO =PO_D.ORDNO
AND
PO_D.ORDNO
相关文档:
sql loader 工具它可以把一些以文本格式存放的数据顺利的导入到oracle数据库中,是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具。缺点就速度比较慢,另外对blob等类型的数据有点麻烦。
在DOC下面输入:sqlldr userid=user/password@sid control=result.ctl
例子:
SQLLDR USERID=zero/zero@ORACLE CONTROL ......
CREATE PROCEDURE fenye
@tblName varchar(255)='wdf1', -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='userid', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设 ......
Window 2003 SQL2000远程连接的问题解决办法2008年10月07日 星期二 15:31一 看ping 服务器IP能否ping通。
这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。
二 在Dos或命令行下输入telnet 服务器IP 端口,看 ......
et ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER function [dbo].[Get_StrArrayLength]
(
@str varchar(1024), --要分割的字符串
@split varchar(10) --分隔符号
)
returns int
as
begin
declare @location int
declare @start int
declare @length int
&nbs ......