2015年学习SQL数据库.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2011-6-15 SQL优化 查询速度慢的原因很多如:没有索引或者没有用到索引、I/O吞吐量小,形成了瓶颈效应、没有创建计算列导致查询不优化、内存不足、网络速度慢、查询出的数据量过大、锁或者死锁、返回了不必要的行或列、查询语句不好或者没有优化 把数据、日志、索引放到不同的I/O设备上,增加读取速度 纵向、横向分割表,减少表的尺寸 升级硬件 根据查询条件建立索引、优化索引、优化访问方式,限制结果集的数据量。注意填充银子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引,不要对有限几个值的列建单一索引如性别。 提高网速。 扩大服务器内存,配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。 增加服务器CPU的个数,但是必须明白并行处理比串行处理更需要内存资源 如果是使用like进行查询的话,简单的index是不行的,但是全文索引耗空间。Like’a%’使用索引,like’%a’不使用索引。Like ‘%a%’查询时,查询耗时和字段总长度成正比,索引不能用char类型,而是varchar。对于字段长的建全文索引。 DB Server 和application Server分离;OLTP和OLAP分离 10分布式分区视图可用于实现数据库服务器联合体。联合体是一组分开管理的服务器,但他们相互协作分担系统的处理负荷。这种通过分区数据行程数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层Web站点的处理需要。在实现分区视图之前,必须先水平分区表,在创建成员表之后,在每个成员服务器上运行。 11 重建索引DBCC REindex ,DBCC IndexDEFRAG,收缩数据和日志DBCC SHRINKDB、Dbcc SHRINKFILE 。设置自动收缩日志,对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。 12 Commit 和 Rollback的区别 Rollback:回滚所有的事务 Commit:提交当前的事务 没有必要在动态SQL里写事务 13 在查询Select语句中用Where子句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/0资源加重了网络的负担降低性能。如果表很大在表扫描的期间将表锁住,禁止其他的链接访问表 14 SQL的注释声明对执行没有任何影响 15 尽可能不使用光标他占用大量的资源。如果需要Row BY Row的执行,尽量采用非光标技术,如在客户端循环,用临时表、Table变量,用子查询Case语句。游标可以按照他所直尺的提取选项进行分类:只进 必须按照从第一行到最后一行的顺序提取行。Fetch Next是唯一允许的提取方式,也是默认方式。可滚动性,可以在游标中任何地方随机提取任意行。 16 用Profiler来跟踪查询,得到查询所需要的时间,找出SQL的问题所在;用索引优化器优化索引。 17 注意Union 和Union all 的去比啊 Union all好 18 注意使用Distinct,在没有必要时不要使用,它同Union一样会会使查询变慢,重复的记录在查询里是没有问题的。 19 查询时不要反悔不需要的行、列。 20 用sp_configure ‘query governor cost limit’ 或者set query_governor_cost_limit来限制查询消耗的资源。当评估查询消耗的资源超出限制是,服务器自动取消查询,在查询之前就扼杀掉。 21 用select top 100/10 Percent来限制用户返回的行数或者set rowcount来限制操作的行。 22 在SQL 2000以前,一般不要用如下的子句:’is null’,’’,’!=’,’!’,’!’,’not’,’not exists’,’not in’,’not like’,’like %500’因为他们不走索引全是表扫描。也不要在Where子句中的列名加函数,如Convert、Substring等,如果必须用函数的时候,创建计算列在创建索引来替代。并且索引不能建的太多太大。Not in 会多次扫描表,使用Exists、not exists ,in ,left outer join 来替代特别是左连接,而Exists比in更快,最慢的是Not操作。 23 使用query Analyzer 查看SQl语句的查询计划和评估分析时候是优化的SQL。 24 如果使用了IN或OR等时发现查询没有走索引,使用显示申明指定索引:select * from PersonMember(index=IX_Title) where Processid in (‘男’,’女’) 25 将需要查询的结果预先计算好放在表中,查询的时候在Select。 26 min 和max 能使用合适的

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档