- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用SQLServer时最容易忽略的21个问题.doc
使用SQL Server时最容易忽略的21个问题教育资源库
如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS)。
在这里,我不打算介绍使用SQL Server的窍门,也不能提供一个包治百病的方案,我所做的是总结一些经验----关于如何形成一个好的设计。这些经验来自我过去几年中经受的教训,一直来,我看到许多同样的设计错误被一次又一次的重复。
你了解工具吗?
不要轻视这一点,这是我在这篇文章中讲述的最关键的一条。也许你也看到有很多的SQL Server程序员没有掌握全部的T-SQL命令和SQL Server提供的那些有用的工具。
什么?我要浪费一个月的时间来学习那些我永远也不会用到的SQL命令???,你也许会这样说。对的,你不需要这样做。但是你应该用一个周末浏览所有的T-SQL命令。在这里,你的任务是了解,将来,当你设计一个查询时,你会记起来:对了,这里有一个命令可以完全实现我需要的功能,于是,到MSDN查看这个命令的确切语法。
不要使用光标
让我再重复一遍:不要使用光标。如果你想破坏整个系统的性能的话,它们倒是你最有效的首选办法。大多数的初学者都使用光标,而没有意识到它们对性能造成的影响。它们占用内存,还用它们那些不可思议的方式锁定表,另外,它们简直就像蜗牛。而最糟糕的是,它们可以使你的DBA所能做的一切性能优化等于没做。不知你是否知道每执行一次FETCH就等于执行一次SELECT命令?这意味着如果你的光标有10000条记录,它将执行10000次SELECT!如果你使用一组SELECT、UPDATE或者DELETE来完成相应的工作,那将有效率的多。
初学者一般认为使用光标是一种比较熟悉和舒适的编程方式,可很不幸,这会导致糟糕的性能。显然,SQL的总体目的是你要实现什么,而不是怎样实现。
我曾经用T-SQL重写了一个基于光标的存储过程,那个表只有100,000条记录,原来的存储过程用了40分钟才执行完毕,而新的存储过程只用了10秒钟。在这里,我想你应该可以看到一个不称职的程序员究竟在干了什么!!!
我们可以写一个小程序来取得和处理数据并且更新数据库,这样做有时会更有效。记住:对于循环,T-SQL无能为力。
我再重新提醒一下:使用光标没有好处。除了DBA的工作外,我从来没有看到过使用光标可以有效的完成任何工作。
规范化你的资料表
为什么不规范化数据库?大概有两个借口:出于性能的考虑和纯粹因为懒惰。至于第二点,你迟早得为此付出代价。而关于性能的问题,你不需要优化根本就不慢的东西。我经常看到一些程序员反规范化数据库,他们的理由是原来的设计太慢了,可结果却常常是他们让系统更慢了。DBMS被设计用来处理规范数据库的,因此,记住:按照规范化的要求设计数据库。
不要使用SELECT *
这点不太容易做到,我太了解了,因为我自己就经常这样干。可是,如果在SELECT中指定你所需要的列,那将会带来以下的好处:
1 减少内存耗费和网络的带宽
2 你可以得到更安全的设计
3 给查询优化器机会从索引读取所有需要的列
了解你将要对数据进行的操作
为你的数据库创建一个健壮的索引,那可是功德一件。可要做到这一点简直就是一门艺术。每当你为一个表添加一个索引,SELECT会更快了,可INSERT和DELETE却大大的变慢了,因为创建了维护索引需要许多额外的工作。显然,这里问题的关键是:你要对这张表进行什么样的操作。这个问题不太好把握,特别是涉及DELETE和UPDATE时,因为这些语句经常在 a WHERE a.id=#39;A#39;B,因为单引号查询发生异常,我该怎么办?,而普遍的回答是:用两个单引号代替单引号。这是错误的。这样治标不治本,因为你还会在其它一些字符上遇到这样的问题,更何况这样会导致严重的bug,除此以外,这样做还会使SQL Server的缓冲系统无法发挥应有的作用。使用参数查询, 釜底抽薪,这些问题统统不存在了。
在程序编码时使用大数据量的数据库
程序员在开发中使用的测试数据库一般数据量都不大,可经常的是最终用户的数据量都很大。我们通常的做法是不对的,原因很简单:现在硬盘不是很贵,可为什么性能问题却要等到已经无可挽回的时候才被注意呢?
12下一页 这篇文章来自..,。不要使用INSERT导入大批的数据
请不要这样做,除非那是必须的。使用UTS或者BCP,这样你可以一举而兼得灵活性和速度。
注意超时问题
查询数据库时,一般数据
您可能关注的文档
- 乌司他丁在体外循环心脏手术中对细胞免疫功能的影响.doc
- 乌司他丁对体外循环心内直视手术中炎性细胞因子的影响.doc
- 乌司他丁对心肺复苏大鼠心功能及心肌组织CD11b、ICAM1的影响.doc
- 乙型肝炎病毒X基因对肝癌细胞Bel7404细胞周期的影响.doc
- 乙酰胺对念珠藻No.stoc106生长周期的影响.doc
- 乙醇对糖尿病易感患者血清肿瘤坏死因子α、白介素1、白介素6、谷氨酸脱羧酶抗体水平的影响.doc
- 九年级毕业典礼讲话:怀揣梦想,扬帆起航,勇敢前行.doc
- 九年级迎中考体育训练活动方案.doc
- 乡土材料在农村幼儿园区域活动中的应用研究.doc
- 乡村医生技能竞赛抢答题(1.doc
- 文旅IP商业化与2025年市场拓展实战指南.docx
- 2025年自动驾驶汽车自动驾驶汽车与无人机编队应用研究报告.docx
- 2025年文化创意主题餐厅餐饮业服务质量管理研究报告.docx
- 2025年快消品行业数字化转型策略报告:数字化营销案例深度解析.docx
- 教育园区建设社会稳定风险评估报告:2025年风险评估与政策优化策略.docx
- 工业自动化控制网络在食品加工行业的智能化改造报告.docx
- 2024-2025学年初中地理八年级上册中图版(北京)(2024)教学设计合集.docx
- 数字印刷机生产线项目立项报告(模板).docx
- 未来五年大数据驱动的个性化广告投放技术报告.docx
- 城市供水厂自动化系统智能化升级改造项目质量控制控制评估报告2025.docx
最近下载
- 西门子840DSL报警导入模板.xls VIP
- 现代密码学(电子科大)中国大学MOOC慕课 章节测验期末考试客观题答案.pdf VIP
- TOTO东陶诺锐斯特TCF9898&9788WCS使用说明书.pdf
- 红警2共和国之辉rules.ini修改菜鸟教程.docx VIP
- 人教B版高中数学必修一全册教学课件.pptx
- 工程售后服务承诺书15篇.docx VIP
- 苏科版九年级物理电压和电压表的使用.pptx VIP
- 苏科物理九年级上册电流和电流表的使用课件.pptx VIP
- 蛇足石杉的孢子分析-特种植物育种与栽培专业论文.docx VIP
- 图形图像处理PhotoshopCC(电子商务专业)高职PPT完整全套教学课件.pptx VIP
文档评论(0)