存储过程优化
最近,遇到一个项目,每秒大概有2000次,对2000张表的插入操作。每1次的数据量是200个字节,并且表的数量是不确定的,是随着设备的新增而增加的。我写了如下一个存储过程:
create proc add_GPSInfo
@tableName varchar(30),
@sLongitude varchar(50),
@sLatitude varchar(50),
@sStatus int,
@sDataType int,
@sHeading real,
@sSpeed real,
@sGpsTime varchar(30),
@sMiles varchar(10)
AS
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
begin
exec('INSERT INTO ' +@tableName+ ' (Longitude,Latitude,Status,DataType,Heading,Speed,GpsTime,Miles) VALUES ('''+@sLongitude+''','''+@sLatitude+''','+@sStatus+','+@sDataType+','+@sHeading+','+@sSpeed+','''+@sGpsTime+''','+@sMiles+')' );
end
else
begin exec(
'CREATE TABLE [dbo].['+@tableName+'] (
[Longitude] [float] NULL ,
[Latitude] [float] NULL ,
[Status] [int] NULL ,
[DataType] [int] NULL ,
[Heading] [real] NULL ,
[Speed] [real] NULL ,
[GpsTime] [datetime] NULL ,
[Miles] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY]'
);
exec('INSERT INTO ' +@tableName+ ' (Longitude,Latitude,Status,DataType,Heading,Speed,GpsTime,Miles) VALUES ('''+@sLongitude+''','''+@sLatitude+''','+@sStatus+','+@sDataType+','+@sHeading+','+@sSpeed+','''+@sGpsTime+''','+@sMiles+')' );
end
GO
在这里,请教一下各位,如果不该表思路,在SQL语句层面上,这个存储过程还可以怎么优化一下呢?
create proc add_GPSInfo
@tableName varchar(30),
@sLongitude varchar(50),
@sLatitude varchar(50),
@sStatus int,
@sDataType int,
@sHeading real,
@sSpeed real,
@sGpsTime varchar(30),
@sMiles varchar(10)
AS
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].['+@TableName+']') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
begin
exec('INSERT INTO ' +@tableName+ ' (Longitude,Latitude,Status,DataType,Heading,Speed,GpsTime,Miles) VALUES ('''+@sLongitude+''','''+@sLatitude+''','+@sStatus+','+@sDataType+','+@sHeading+','+@sSpeed+','''+@sGpsTime+''','+@sMiles+')' );
end
else
begin exec(
'CREATE TABLE [dbo].['+@tableName+'] (
[Longitude] [float] NULL ,
[Latitude] [float] NULL ,
[Status] [int] NULL ,
[DataType] [int] NULL ,
[Heading] [real] NULL ,
[Speed] [real] NULL ,
[GpsTime] [datetime] NULL ,
[Miles] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY]'
);
exec('INSERT INTO ' +@tableName+ ' (Longitude,Latitude,Status,DataType,Heading,Speed,GpsTime,Miles) VALUES ('''+@sLongitude+''','''+@sLatitude+''','+@sStatus+','+@sDataType+','+@sHeading+','+@sSpeed+','''+@sGpsTime+''','+@sMiles+')' );
end
GO
在这里,请教一下各位,如果不该表思路,在SQL语句层面上,这个存储过程还可以怎么优化一下呢?
...全文
相关推荐
oracle 存储过程优化
作为一名数据库开发工程师必须掌握的技能,因为工作中会遇到很多需要优化的过程
MySQL存储过程的优化实例
前言 在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用存储过程来封装数据库操作。如果项目的存储过程较多,书写又没有一定的规范,将会影响以后的系统维护困难和大存储过程逻辑的难以理解,另外如果数据库的数据量大或者项目对存储过程的性能要求很,就会遇到优化的问题,否则速度有可能很慢,经过亲身经验,一个经过优化过的存储过程要比一个性能差的存储过程的效率甚至高几百倍。下面介绍某一个MySQL存储过程优化的整个过程。 在本文中,需要被优化的存储过程如下: drop procedure if exists pr_dealtestnum; delimiter // create
ORACLE存储过程性能优化技巧
ORACLE存储过程性能优化技巧,帮助你更好的学习oracle的方方面面的技术!
ORACLE SQL 优化 存储过程 PROCEDURE
本人五年的SQL开发经验和存储过程开发样例、以及SQL优化要点,数据库DB_LINK,数据库审计等,绝对物超所值,欢迎大家下载。
SQL存储过程优化参考
收藏的存储过程优化参考,包括: 存储过程编写经验和优化措施.doc 优化SQL语句和存储过程.pdf 希望对大家有点参考价值


疑难问题
