二查询语句的优化(针对sql server)
很多人只为目的写出sql语句而不考虑sql语句的执行效率在这我只提供一优化表顺序的方法(sql语句的优化和原则将会在我的sql server学习笔记中专题讨论)
对sql语句执行效率可用sql server的查询分析器来查看语句的执行过程
优化表顺序一般情况下sqlserver 会对表的连接作出自动优化例如select nameno from A join B on A id=Bid join C on Cid=Aid where name=wang
尽管A表在From中先列出然后才是B最后才是C但sql server可能会首先使用c表它的选择原则是相对于该查询限制为单行或少数几行就可以减少在其他表中查找的总数据量绝大多数情况下sql server 会作出最优的选择但如果你发觉某个复杂的联结查询速度比预计的要慢就可以使用SET FORCEPLAN语句强制sql server按照表出现顺序使用表如上例加上SET FORCEPLAN ON……SET FORCEPLAN OFF 表的执行顺序将会按照你所写的顺序执行在查询分析器中查看种执行效率从而选择表的连接顺序
使用SET FORCEPLAN选择表联结顺序
三页面的优化(aspx)
主要针对几个页面属性
EnableViewState(页面的视图状态)如果无特殊要求设置为false使用ViewState 每个对象都必须先序列化到 ViewState 中然后再通过回传进行反序列化因此使用 ViewState是没有代价的尽量减少使用对象如果可能尽量减少放入 ViewState 中的对象的数目下面情况基本上可以禁用viewstate
()页面控件 (ascx)
()页面不回传给自身
()无需对控件的事件处理
()控件没有动态的或数据绑定的属性值(或对于每个postpack都在代码中处理)
单个页面或每个页面都禁用 ViewState如下所示单个页面 每个页面在 webconfig 中 EnableSessionState保持默认值即可(如果页面用到sessionstate它才会占用资源)EnableViewStateMac如果无安全上的特殊要求保持默认值
Pagelayout页面布局模型建议使用Flowlayout(元素不带绝对定位属性添加)Gridlayout(绝对定位属性)由于采用绝对定位将会比Flowlayout生产更多的代码主要是控件的定位信息
项目发布的时候切记解除页面的Debug状态
Html语言的优化我的建议是熟练掌握Html/javascript少用vsnet自动生产的代码它会自动生成一些无用的html代码
smart navigation设置为true能让用户明显的感觉性能提高启用此属性后对客户端和服务端影响不大它能智能涮新需要涮新需涮新的部分
[] [] []