存储过程编写经验和优化措施
[ 2006-05-18 23:51:41 | 作者: admin ]
http://blog.csdn.net/tutugogo/archive/2006/05/17/742329.aspx
一、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。
二、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范,将会影响以后的系统维护困难和大SP逻辑的难以理解,另外如果数据库的数据量大或者项目对SP的性能要求很,就会遇到优化的问题,否则速度有可能很慢,经过亲身经验,一个经过优化过的SP要比一个性能差的SP的效率甚至高几百倍。
三、内容:
1、开发人员如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用“databse.dbo...
阅读全文…
一、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。
二、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范,将会影响以后的系统维护困难和大SP逻辑的难以理解,另外如果数据库的数据量大或者项目对SP的性能要求很,就会遇到优化的问题,否则速度有可能很慢,经过亲身经验,一个经过优化过的SP要比一个性能差的SP的效率甚至高几百倍。
三、内容:
1、开发人员如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用“databse.dbo...
阅读全文…
得到行号 rowid 的方法
[ 2006-05-16 21:55:44 | 作者: admin ]
方法一(采用临时表,2005版本之前)
数据量的时候非常慢
方法二 2005支持row_number()
row_number()在2005中被支持:
阅读全文…
数据量的时候非常慢
if object_id('tempdb..#') is not null drop table #
go
select identity(int, 1, 1) as id, * into # from test
select * from #
drop table #
go
select identity(int, 1, 1) as id, * into # from test
select * from #
drop table #
方法二 2005支持row_number()
row_number()在2005中被支持:
USE AdventureWorks;
GO
WITH OrderedOrders AS
(SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (order by OrderDate)as RowNumber
FROM Sales.SalesOrderHeader )
...GO
WITH OrderedOrders AS
(SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (order by OrderDate)as RowNumber
FROM Sales.SalesOrderHeader )
阅读全文…
关于SQL注入 (比较详细)
[ 2006-05-13 00:22:05 | 作者: admin ]
http://blog.vckbase.com/wangjun/archive/2005/03/16/3645.html
SQL 注入攻击是比较常见的方式:
例如这么一张表格: CREATE TABLE [users] (
[userid] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[password] [varchar] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
) ON [PRIMARY]
GO
假如代码是这样的:
<%
userid = TRIM(Request("uid"))
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=SQLOLEDB;U...
阅读全文…
SQL 注入攻击是比较常见的方式:
例如这么一张表格: CREATE TABLE [users] (
[userid] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[password] [varchar] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
) ON [PRIMARY]
GO
假如代码是这样的:
<%
userid = TRIM(Request("uid"))
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=SQLOLEDB;U...
阅读全文…
关于sql server的连接池压力测试 sp_who
[ 2006-05-12 20:45:05 | 作者: admin ]
1、打开网站页面,按住F5健3分钟
2、打开查询分析器,键入sp_who
如果sleeping 超过50,那么恭喜你,你的网站连接池人多的时候肯定要超时
查询分析器操作
use master
exec sp_who
2、打开查询分析器,键入sp_who
如果sleeping 超过50,那么恭喜你,你的网站连接池人多的时候肯定要超时
查询分析器操作
use master
exec sp_who
关于 SQL Server 2005 的存储过程
[ 2006-04-27 22:10:17 | 作者: admin ]
关于 sp_dropextendedproc
在 SQL Server 2005 中,sp_dropextendedproc 不会删除系统扩展存储过程。但系统管理员应拒绝 public 角色对扩展存储过程的 EXECUTE 权限。在 SQL Server 2000 中,sp_dropextendedproc 可用于删除任何扩展存储过程。
关于 xp_cmdshell
SQL Server 2005 中引入的 xp_cmdshell 选项是服务器配置选项,使系统管理员能够控制是否可以在系统上执行 xp_cmdshell 扩展存储过程。默认情况下,xp_cmdshell 选项在新安装的软件上处于禁用状态,但是可以通过使用外围应用配置器工具或运行 sp_configure 系统存储过程来启用它,如下面的代码示例所示:
...
阅读全文…
Sql Server 常用函数
[ 2005-11-13 23:11:26 | 作者: admin ]
1,统计函数 avg, count, max, min, sum
多数聚会不统计值为null的行。可以与distinct一起使用去掉重复的行。可以与group by 来分组
2, 数学函数
SQRT
ceiling(n) 返回大于或者等于n的最小整数
floor(n), 返回小于或者是等于n的最大整数
round(m,n), 四舍五入,n是保留小数的位数
abs(n)
sign(n), 当n>0, 返回1,n=0,返回0,n<0, 返回-1
PI(), 3.1415....
rand(),rand(n), 返回0-1之间的一个随机数
3,字符串函数
ascii(), 将字符转换为ASCII码, ASCII('abc') = 97
char(), ASCII 码 转换为 字符
low(),upper()
...
阅读全文…
多数聚会不统计值为null的行。可以与distinct一起使用去掉重复的行。可以与group by 来分组
2, 数学函数
SQRT
ceiling(n) 返回大于或者等于n的最小整数
floor(n), 返回小于或者是等于n的最大整数
round(m,n), 四舍五入,n是保留小数的位数
abs(n)
sign(n), 当n>0, 返回1,n=0,返回0,n<0, 返回-1
PI(), 3.1415....
rand(),rand(n), 返回0-1之间的一个随机数
3,字符串函数
ascii(), 将字符转换为ASCII码, ASCII('abc') = 97
char(), ASCII 码 转换为 字符
low(),upper()
...
阅读全文…
sql server 中关于字符串的截取
[ 2005-11-13 23:10:39 | 作者: admin ]
[test]表的按varchar类型字段demo排序的实现
demo字段
---------------
1LP1
1LP2
2LP1
3LP3
19LP23
23LP1
首先显示测试
---------------------------------
SELECT CAST(LEFT(demo, CHARINDEX('LP', demo) - 1) AS int) AS Expr1,
CAST(RIGHT(demo, LEN(demo) - CHARINDEX('LP', demo) - 1) AS int) AS Expr2
FROM test
结论
-----------------------------------
SELECT *
FROM test
ORDER BY
CAST(LEFT(demo, CHARINDEX('LP', demo) - 1) AS int),
...
阅读全文…
demo字段
---------------
1LP1
1LP2
2LP1
3LP3
19LP23
23LP1
首先显示测试
---------------------------------
SELECT CAST(LEFT(demo, CHARINDEX('LP', demo) - 1) AS int) AS Expr1,
CAST(RIGHT(demo, LEN(demo) - CHARINDEX('LP', demo) - 1) AS int) AS Expr2
FROM test
结论
-----------------------------------
SELECT *
FROM test
ORDER BY
CAST(LEFT(demo, CHARINDEX('LP', demo) - 1) AS int),
...
阅读全文…
一、资料定义 ddl(data definition language)
资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有 什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。
1、建表格:
create table table_name(
column1 datatype [not null] [not null primary key],
column2 datatype [not null],
...)
说明:
datatype --是资料的格式,详见表。
nut null --可不可以允许资料有空的(尚未有资料填入)。
primary key --是本表的主键。
2、更改表格
alter table table_name
...
阅读全文…
资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有 什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。
1、建表格:
create table table_name(
column1 datatype [not null] [not null primary key],
column2 datatype [not null],
...)
说明:
datatype --是资料的格式,详见表。
nut null --可不可以允许资料有空的(尚未有资料填入)。
primary key --是本表的主键。
2、更改表格
alter table table_name
...
阅读全文…