随笔分类 -  MSSQL

上一页 1 2 3 4 5 下一页
Sql纵向表转为横向表,并分组统计(转)
摘要:在写系统尤其是在写课程系统是经常会遇到类似如下纵-横转换,在使用group by ... with cube/rollup + grouping() 来实现是非常容易做到的。1. 用于测试的数据如下:declare@tabtable(Classvarchar(20),Studentvarchar(20),Coursevarchar(50),Gradesdecimal(7,2));insertinto@tab(Class,Student,Course,Grades)values('A班','张三','语文',60);insertinto@tab(C 阅读全文
posted @ 2013-05-27 22:27 davidkam 阅读(1697) 评论(0) 推荐(0)
如何有效防范SQL注入-来自微软(转)
摘要:http://technet.microsoft.com/zh-cn/library/ms161953.aspx更新日期:2005 年 12 月 5 日SQL 注入是一种攻击方式,在这种攻击方式中,恶意代码被插入到字符串中,然后将该字符串传递到 SQL Server 的实例以进行分析和执行。任何构成 SQL 语句的过程都应进行注入漏洞检查,因为 SQL Server 将执行其接收到的所有语法有效的查询。一个有经验的、坚定的攻击者甚至可以操作参数化数据。SQL 注入的主要形式包括直接将代码插入到与 SQL 命令串联在一起并使其得以执行的用户输入变量。一种间接的攻击会将恶意代码注入要在表中存储或作 阅读全文
posted @ 2013-05-27 22:26 davidkam 阅读(222) 评论(0) 推荐(0)
SQL Server里面如何导出包含(insert into)数据的SQL脚本(转)
摘要:通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没有insert into。因为SQL Server并不包含这个功能,只能靠第三方的代码了。以下存储过程可以实现:CREATEPROCEDUREdbo.UspOutputData@tablenamesysnameASdeclare@columnvarchar(1000)declare@columndatavarchar(1000)declare@sqlvarchar(4000)declare@xty 阅读全文
posted @ 2013-05-27 22:25 davidkam 阅读(305) 评论(0) 推荐(0)
SQL Server 重置Identity标识列的值(INT爆了(转)
摘要:一、背景 SQL Server数据库中表A中Id字段的定义是:[Id] [int] IDENTITY(1,1),随着数据的不断增长,Id值已经接近2147483647(int的取值范围为:-2 147 483 648 到 2 147 483 647)了,虽然已经对旧数据进行归档,但是这个表需要保留最近的1亿数据,有什么方法解决Id值就快爆的问题呢? 解决上面的问题有两个办法:一个是修改表结构,把Id的int数据类型修改为bigint;第二个是重置Id(Identity标识列)的值,使它重新增长。 当前标识值:current identity value,用于记录和保存最后一次系统分配的I... 阅读全文
posted @ 2013-05-27 22:24 davidkam 阅读(328) 评论(0) 推荐(0)
sql server性能优化的一些建议(转)
摘要:提高SQL Server性能概观有许多问题影响SQL Server性能和可扩展性。本章讨论这些问题,从数据设计和部署结束。本章强调技巧,你可以使用在性能和可扩展性,以获得最大的收益。你通常能获得最大的收益,通过建立高效的数据访问应用程序的代码,并使用正确的开发技术。你通常不会取得这么大的收益在性能和可扩展性,通过改变SQL Server配置设置。如图14.1所示,最好是集中你的性能设计和调整力度。图14.1:聚焦性能的设计和调整力度该图是反映了典型的情况,并强调这一点,你获得最佳的性能和可扩展性收益在应用程序开发中。索引被认为是应用程序开发工作的一部分,虽然它也是管理的一部分。如何使用本章使用 阅读全文
posted @ 2013-05-27 22:23 davidkam 阅读(158) 评论(0) 推荐(0)
优化杭州某著名电子商务网站高并发千万级大型数据库经验之- SQL语句优化(转)
摘要:昨天晚上看探索栏目,深海捕捞帝王蟹;在遥远的阿拉斯加,捕捞船若捞上来的是母蟹会全部重新放到海里,每个人手上拿了一个尺子,若尺寸没达标的公蟹会重新放到大海里,邪恶的美国你为什么这么强大、我愿意当个幸福的母蟹、但是千万不要把我生在邪恶的东海,曾经从来没想移民的愿望,看了这期探险节目后,更加懂了什么叫爱护环境爱护地球了。我们的东海别说螃蟹,好像连虾米都被电死得差不多了干得竟都是断子绝孙的事儿,邪恶的美帝你太强大了。希望我们不要成为人类的害虫。 我们可以无知,但是不能愚昧,不能干太多断子绝孙的事情,保护我们生存环境从你我做起。 好久没写博客了,一方面是日常工作繁忙,另外一方面是想更多的时间陪陪家里人. 阅读全文
posted @ 2013-05-27 22:22 davidkam 阅读(282) 评论(0) 推荐(1)
SQL 大数据量的优化例子讨论(转)
摘要:今天在itput上看了一篇文章,是讨论一个语句的优化: 原贴地址:http://www.itpub.net/viewthread.php?tid=1015964&extra=&page=1 一,发现问题 优化的语句:请问以下语句如何优化:CREATETABLEaa_001(ipVARCHAR2(28),nameVARCHAR2(10),passwordVARCHAR2(30))select*fromaa_001whereipin(1,2,3)orderbynamedesc;--目前表中记录有一千多万条左右,而且in中的值个数是不确定的。 以上就是优化的需要优化的语句和情况。 不 阅读全文
posted @ 2013-05-27 22:21 davidkam 阅读(212) 评论(0) 推荐(0)
SqlBulkCopy 是个好对象(转)
摘要:SqlBulkCopy是专门用作大数据的导入的, 相比单条的Insert看起来要爽的多. 据说能相差几十倍的性能差距(我们稍后自己做一下测试)微软关于SqlBulkCopy给出的信息如下Microsoft SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表既可以在同一个服务器上,也可以在不同服务器上)。SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案。还有其他将数据加载到 SQL Server 表的方法(例如 INSERT 语句),但相比之下 SqlBulkCopy 提供明显的性能优势。 使用 SqlBulkCopy 类 阅读全文
posted @ 2013-05-27 22:20 davidkam 阅读(199) 评论(0) 推荐(0)
SQLServer中批量插入数据方式的性能对比(转)
摘要:昨天下午快下班的时候,无意中听到公司两位同事在探讨批量向数据库插入数据的性能优化问题,顿时来了兴趣,把自己的想法向两位同事说了一下,于是有了本文。公司技术背景:数据库访问类(xxx.DataBase.Dll)调用存储过程实现数据库的访问。技术方案一:压缩时间下程序员写出的第一个版本,仅仅为了完成任务,没有从程序上做任何优化,实现方式是利用数据库访问类调用存储过程,利用循环逐条插入。很明显,这种方式效率并不高,于是有了前面的两位同事讨论效率低的问题。技术方案二:由于是考虑到大数据量的批量插入,于是我想到了ADO.NET2.0的一个新的特性:SqlBulkCopy。有关这个的性能,很早之前我是亲自 阅读全文
posted @ 2013-05-27 22:19 davidkam 阅读(523) 评论(0) 推荐(0)
SQL Server 批量插入数据的两种方法(转)
摘要:原文:http://blog.csdn.net/tjvictor/article/details/4360030 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题。下面介绍 SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters)。运行下面的脚本,建立测试数据库和表值参数。[c-sharp] view plaincopy--CreateDataBasecreatedatabaseBulkTestDB;gouseBulkTestD 阅读全文
posted @ 2013-05-25 14:32 davidkam 阅读(179) 评论(0) 推荐(0)
SQL Server 2005 海量数据解决方案(分区表)与对已存在的表进行分区(转)
摘要:这两天一直在研究SQL Server 2005 中如何对表进行分区,但是参考了多数资料都是说新建表后再将原表中数据插入到新表中,这样有些不方便. 最后找到了在已有表上做分区表的方法.见代码. 我们有个表现在已经到了1千万的数据,之前仅仅是优化索引和索引试图来在真实的环境中查看到底sql2005单表能负载多大的量。 最后得出结论,在我们公司现有的硬件条件下,sql2005中,单表的量最多不能超过250w数据。(这个数据会根据硬件的不同而会有所不同.)---select * from t200705--1.先根据表数据的量大小,来拆分每一个分区,保证每一个分区表的记录尽量在250w条记录左右.-. 阅读全文
posted @ 2013-05-18 15:05 davidkam 阅读(190) 评论(0) 推荐(0)
SQL Server数据库优化方案(转)
摘要:SQL Server数据库优化方案 查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要的行和列 10、查询语句不好,没有优化 可以通过如下方法来优化查询: 1、把数据、日志、索引放到不同的I/O... 阅读全文
posted @ 2013-05-18 09:11 davidkam 阅读(156) 评论(0) 推荐(0)
SQL Server 2005 中的分区表和索引(转)
摘要:适用于: SQL Server 2005 摘要:SQL Server 2005 中基于表的分区功能为简化分区表的创建和维护过程提供了灵活性和更好的性能。追溯从逻辑分区表和手动分区表的功能到最新分区功能的发展历程,探索为什么、何时以及如何使用 SQL Server 2005 设计、实现和维护分区表。(本文包含一些指向英文站点的链接。) 关于本文本文所描绘的功能和计划是下一版本 SQL Server 的开发方向。它们并非本产品的说明书,如有更改,恕不另行通知。对于最终产品是否具有这些功能不做任何明示或暗示的保证。对于某些功能,本文假设读者熟悉 SQL Serve... 阅读全文
posted @ 2013-05-18 09:05 davidkam 阅读(251) 评论(0) 推荐(0)
50种方法巧妙优化你的SQLServer数据库(转)
摘要:查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要的行和列 10、查询语句不好,没有优化 可以通过如下方法来优化查询: 1、把数据、日志、索引放到不同... 阅读全文
posted @ 2013-05-18 09:04 davidkam 阅读(438) 评论(0) 推荐(0)
数据库命名规范(转)
摘要:Table: 实体表:不超过3个单词或者24个字符,例:user,group 关系表:表1_表2_relation,例:user_group_relation 当需要使用的表名为SQL保留关键字,可以使用tbl_表名的方式(全部),或者复数形式解决View: [******]_view,例:user_group_view表空间(Oracle): ts_[******],例:ts_user分区表(Oracle): tp_+分区描述,例:tp_system_items_0612约束: ckc_[表]_[字段] ckt_[表],例:ckc_user_id,ckt_user一般索引:idx_[*... 阅读全文
posted @ 2013-05-18 09:02 davidkam 阅读(239) 评论(0) 推荐(0)
SQL Server DBA常见面试 笔试问题(转)
摘要:很 多开发人员都想成为一名DBA,也有很多人一开始就把自己定位成为一名DBA,DBA究竟需要掌握些什么知识和技能呢?以下是我做DBA工作和面试DBA 时,整理的一些DBA方面的三十个问题,三十个大问题中还有许多小的问题,涵括了SQLServer DBA比较多的技术知识点,与大家分享下,希望给有志做DBA的朋友们一些帮助:1. char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储过程和使用T-SQL查询数据有啥不一样;2. 系统DB有哪些,都有什么作用,需不需要做备份,为什么;损坏了如何做还原(主要是master 阅读全文
posted @ 2013-05-18 09:00 davidkam 阅读(280) 评论(0) 推荐(0)
SQL Server 2008 分区函数和分区表详解(转)
摘要:http://database.9sssd.com/mssql/art/951当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的更小。维护任务(例如,重新生成索引或备份表)也可以更快的运行。我 们可以再不通过将表物... 阅读全文
posted @ 2013-05-18 08:59 davidkam 阅读(275) 评论(0) 推荐(0)
T- SQL性能优化详解(转)
摘要:故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因。 经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得 很大,有些表甚至有上千万行数据,测试团队开始在生产数据库上测试,发现订单提交过程需要花5分钟时间,但在网站上线前的测试中,提交一次订单只需要 2/3秒。 类似这种故事在世界各个角落每天都会上演,几乎每个开发人员在其开发生涯中都会.. 阅读全文
posted @ 2013-05-18 08:58 davidkam 阅读(255) 评论(0) 推荐(0)
SQL Server表分区(转)
摘要:一、分区表简介使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性大型表:数据量巨大的表。访问模式:因目的不同,需访问的不同的数据行集,每种目的的访问可以称之为一种访问模式。分区一方面可以将数据分为更小、更易管理的部分,为提高性能起到一定的作用;另一方面,对于如果具有多个CPU的系统,分区可以是对表的操作通过并行的方式进行,这对于提升性能是非常有帮助的。注意:只有 SQL Server Enterprise Edition 支持分区。二、创建分区表或分区索引的步骤可以分为以下步骤:1. 确定分区列和分区数2. 确定是否使用多个文件组3. 创建分区函数4. 创建分区 阅读全文
posted @ 2013-05-18 08:56 davidkam 阅读(386) 评论(0) 推荐(1)
数据库索引详解(转)
摘要:1、索引是什么索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行。表或视图可以包含以下类型的索引:* 聚集 o 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。索引定义中包含聚集索引列。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序。 o 只有当表包含聚集索引时,表中的数据行才按排序顺序存储。如果表具有聚集索引,则该表称为聚集表。如果表没有聚集索引,则其数据行存储在一个称为堆的无序 结构中。 * 非聚集 o 非聚集索引具有 阅读全文
posted @ 2013-05-18 08:54 davidkam 阅读(202) 评论(0) 推荐(0)

上一页 1 2 3 4 5 下一页