随笔分类 - sqlserver
摘要:注:sqlserver下create table test(areaid int,score int)insert into test select 0,10union all select 0,20union all select 0,30union all select 0,40union all select 0,50union all select 1,10union all select 1,20union all select 1,30union all select 1,40union all select 1,50union all select 2,10union all s
阅读全文
摘要:对普通开发人员来说经常能接触到上千万条数据优化的机会也不是很多,这里还是要感谢公司提供了这样的一个环境,而且公司让我来做优化工作。当数据库中的记录不超过10万条时,很难分辨出开发人员的水平有多高,当数据库中的记录条数超过1000万条后,还是蛮能考验开发人员的综合技术能力。 当然不是每个公司都能请得起专业的DBA,话又说过来专业的DBA也未必能来我们公司长期工作,这就不只是薪资待遇问题了还会涉及到人家的长期发展规划了,当然我也不是专业的DBA,本着能把问题解决好就是好猫的理念。 我们先看图,数据库中的记录数如下:记录数为10581490条同时还需要从另外一个表读取7万多条数据。 页面运行效果..
阅读全文
摘要:SQL语句优化技术分析 操作符优化IN操作符用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式 查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。 推荐方案:在业务密集的SQL当中尽量不采用IN操作符。NOTIN操作符 此操作是强列推荐不使用的
阅读全文
摘要:1、开发人员如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用“databse.dbo.table_name”,因为sp_depends不能显示出该SP所使用的跨库table或view,不方便校验。2、开发人员在提交SP前,必须已经使用set showplan on分析过查询计划,做过自身的查询优化检查。3、高程序运行效率,优化应用程序,在SP编写过程中应该注意以下几点:a) SQL的使用规范:i. 尽量避免大事务操作,慎用holdlock子句,提高系统并发能力。ii. 尽量避免反复访问同一张或几张表,尤其是数据量较大的表,可以考虑先根据条件提取数
阅读全文
摘要:人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。 笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。 在对它们进行适当的优化后,其运行速度有了明显地提高! 下面我将从这三个方面分别进行总结: 为了更直观地说明问题,所有实例中的SQL运行时间均经过测试,不超过1秒的均表示为(< 1秒)。---- 测试环境: 主机:HP LH II---- 主频:330MHZ----
阅读全文
摘要:1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。这就是“一张原始单证对应多个实体”的典型例子。 2. 主键与外键 一般而言,一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的实体, 可以定义主键,也可以不定义主
阅读全文
摘要:随着计算机技术越来越广泛地应用于国民经济的各个领域,在计算机硬件不断微型化的同时,应用系统向着复杂化、大型化的方向发展。数据库是整个系统的 核心,它的设计直接关系系统执行的效率和系统的稳定性。因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正 确性。只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运行效率。虽然对于小项目或中等规模的项目 开发人员可以很容易地利用范式理论设计出一套符合要求的数据库,但对于一个包含大型数据库的软件项目,就必须有一套完整的设计原则与技巧。 一、成立数据小组大型数据库数据元素多
阅读全文
摘要:介绍两个查看SQLServer服务器是否被入侵的方法: 1、入侵者入侵后一般会开服务器的3389,建立隐藏用户,然后登录。我们只要到C:\Documents and Settings这个目录下看看是否有可以的用户名就可以了,不管是不是隐藏的用户,都会在这里显示出来。 2、有些入侵者喜欢留一个有高权限的sqlserver数据库用户,当作后门,我们可以打开登陆sqlserver的查询分析器,然后依次打开 master--系统表--dbo.sysxlogins,在这个窗口的name列中可以看到sqlserver数据库的用户,一般情况下会有3个用户,一个是sa,一个 BUILTIN\Administr
阅读全文
摘要:declare @ttb table( [undid] [int] not null IDENTITY (1, 1) , [ID] [int] not null Primary key)set RowCount 60insert into @ttb select id from dbo.qqqq where Isction=0 and Isld=0 and QueeID<>3SELECT * FROM dbo.qqqq WHERE ID in (select ID from @ttb where undid>40)
阅读全文
摘要:1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。 select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=03.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引
阅读全文
摘要:对于web应用开发,多数性能瓶颈均出现在数据库上,除了采用分布式架构或云处理(大公司基本上都是),更重要的是平时程序设计时要遵照一些规则,从根本上提高系统的性能,以下总结了一些常用的规则方法,仅供参考,欢迎跟帖补充。。。 F P$ +A' t~%l!jdi 1、 把数据、日志、索引放到不同的I/O设备上,增加读取速度。数据量(尺寸)越大,提高I/O越重要。 wQN1rUMG J:0y6O6} 2、 纵向、横向分割表,减少表的尺寸,如:可以把大数据量的字段拆分表。 3gZr&F<O 26IhUJn( 3、 根据查询条件,建立索引,优化索引、优化访问方
阅读全文
摘要:A.截取从字符串左边开始N个字符 Declare @S1 varchar(100) Select @S1='http://www.xrss.cn' Select Left(@S1,4) ------------------------------------ 显示结果: http B.截取从字符串右边开始N个字符(例如取字符www.163.com) Declare @S1 varchar(100) Select @S1='http://www.xrss.cn' Select right(@S1,11) ------------------------------
阅读全文
浙公网安备 33010602011771号