转载:有用的存储过程
摘要:1> isnumeric( expression )-- 返回值 1 | 0,判断是否是数字类型。数值类型包括(int、bigint、smallint、tinyint、numeric、money、smallmoney、float、decimal、real)示例:select*fromtablename whereisnumeric(columnname)<>1; go以上示例使用 isnumeric 返回所有非数值的数据行。2> isdate( expression )-- 如果 expression 是有效的 date、time 或 datetime 值,则返回 1;
阅读全文
水平分表查询(存储过程)
摘要:转载:http://tuqiang9999.blog.163.com/blog/static/332413201036101137645/前提,数据库每天会新建一张表,由于数据量非常大,表的数据结构是一样的。下面这个存储过程是返回一条SQL语句的。我们传入的是两个时间,得到的是查询这段时间内的数据的一个SQL语句。Create Procedure Search@date1 datetime, --起始时间@date2 datetime --终止时间asdeclare @date1New datetime, @rq varchar(6), @i int , --记录循环次数 @s varchar
阅读全文
数据库优化之三:数据表设计
摘要:1 为了保证数据库的一致性和完整性,在逻辑设计的时候往往会设计过多的表间关联,尽可能的降低数据的冗余。(例如用户表的地区,我们可以把地区另外存放到一个地区表中)如果数据冗余低,数据的完整性容易得到保证,提高了数据吞吐速度,保证了数据的完整性,清楚地表达数据元素之间的关系。而对于多表之间的关联查询(尤其是大数据表)时,其性能将会降低,同时也提高了客户端程序的编程难度,因此,物理设计需折衷考虑,根据业务规则,确定对关联表的数据量大小、数据项的访问频度,对此类数据表频繁的关联查询应适当提高数据冗余,为了提高系统的响应时间,合理的数据冗余也是必要的。设计人员在设计阶段应根据系统操作的类型、频度加以均衡
阅读全文
数据库优化之:SQL语句优化之二
摘要:1 分页存储过程CREATE procedure pagination1(@pagesize int, --页面大小,如每页存储20条记录@pageindex int --当前页码)asset nocount onbegindeclare @indextable table(id int identity(1,1),nid int) --定义表变量declare @PageLowerBound int --定义此页的底码declare @PageUpperBound int --定义此页的顶码set @PageLowerBound=(@pageindex-1)*@pagesizeset @Pa
阅读全文
数据库优化之:SQL语句优化之一
摘要:1 得到SQL语句执行时间执行之前:declare @d datetime set @d=getdate()执行之后:select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())2聚集索引和非聚集索引实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。我们可
阅读全文