sql优化方案讲解.docxVIP

  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文档。上传文档
查看更多
Sql优化方案 .数据库优化技术 1.索弓|(强烈建议使用) 1.1优点 创建索引可以大大提高系统的性能。 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大 加快数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特 别有意义。 第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分 组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的 性能。 1.2缺点 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一 定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这 样就降低了数据的维护速度。 1.3使用准则 索引是建立在数据库表中的某些列的上面。 因此,在创建索引的时候,应该 仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。 一般来说,应该在这些列上创建索引。 第一,在经常需要搜索的列上,可以加快搜索的速度; 第二,在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; 第三,在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度; 第四,在经常需要根据范围进行搜索的列上创建索引, 因为索引已经排序, 其指 定的范围是连续的; 第五,在经常需要排序的列上创建索引, 因为索引已经排序, 这样查询可以利用 索引的排序,加快排序查询时间; 第六,在经常使用在 WHERE子句中的列上面创建索引,加快条件的判断速度。 同样,对于有些列不应该创建索引。 一般来说, 不应该创建索引的的这些列 具有下列特点: 第一,对于那些在查询中很少使用或者参考的列不应该创建索引。 这是因为, 既 然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由 于增加了索引,反而降低了系统的维护速度和增大了空间需求。 第二,对于那些只有很少数据值的列也不应该增加索引。 这是因为, 由于这些列 的取值很少, 例如人事表的性别列, 在查询的结果中, 结果集的数据行占了表中 数据行的很大比例, 即需要在表中搜索的数据行的比例很大。 增加索引, 并不能 明显加快检索速度。 第三,对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因 为,这些列的数据量要么相当大,要么取值很少。 第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能 和检索性能是互相矛盾的。 当增加索引时, 会提高检索性能, 但是会降低修改性 能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大 于检索性能时,不应该创建索引。 1.4 总结 1) 索引提高了数据库的检索性能,但一定程度上牺牲了修改性能。因此适用于 “多查询少修改” (insert,update,delete)的表。 2) 对此类表中的外键,需要分组,排序或作为检索条件的字段建立索引 3) 对此类表中查询使用少,字段取值少,字段数据量大的不应创建索引 数据库设计标准化 2.1 标准化 标准化是在数据库中组织数据的过程。 其中包括,根据设计规则创建表并在 这些表间建立关系。 标准化的特点: 1)所有的“对象”都在它自己的 table 中,没有冗余。 2)简洁,更新属性通常只需要更新很少的记录。 3)Join 操作比较耗时。 4)Select,sort 优化措施比较少。 6)适用于OLTP应用(实时的增删改查系统)。 2.2 非标准化 1) 在一张表中存储很多数据,数据冗余。 2) 更新数据开销很大,更新一个属性可能会更新很多表,很多记录。 3) 在删除数据是有可能丢失数据。 4) Select,order 有很多优化的选择。 5) 适用于DSS应用。 2.3 总结 标准化适用于“多修改少查询”的表。提升了修改性能,但查询时通常需要 join 链接,检索慢 非标准化适用于“少修改多查询”的表。减少了 join链接,提升了检索性能, 但修改代价大。(或者说放弃数据一致性,仅修改主表?) 数据类型 最基本的优化之一就是使表在磁盘上占据的空间尽可能小。 这能带来性能非 常大的提升, 因为数据小, 磁盘读入较快, 并且在查询过程中表内容被处理所占 用的内存更少。同时,在更小的列上建索引,索引也会占用更少的资源。 可以使用下面的技术可以使表的性能更好并且使存储空间最小: 1) 使用正确合适的类型, 不要将数字存储为字符串 。 2) 尽可能地使用最有效(最小)的数据类型。MySQL有很多节省磁盘空间和内 存的专业化类型。 3) 尽可能使用较小的整数类型使表更小。例如,

文档评论(0)

dajiefude2 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档