为性能而改变常规设计
有时为了获得所需的性能,减少连接运算而设计非常规数据模型是必要的,但这是最后的解决办法。
保证记录的长度较小,当然要小于一个online页的大小
跨越多页的长记录对性能无益
varchars是有上下边界的字符串
有效地减少存储空间
如一次数据更新增加了varchar值的长度,由于这条记录可能会跨越多页而对性能带来负面影响。
在绝对有必要的情况下才使用blobs
blobs比其它数据的处理的效率要低
索引
避免高度重复索引
高度重复索引会降低性能。如果觉得有必要在包含高度重复值的列上建立索引,最好与包含唯一值(或近似唯一的其它列)建立一个复合索引,服务器仍可以使用该索引来访问重复列值,而该索引得处理效率更高。
精心选择索引
索引的目的是为提供快速的数据访问,创建的索引要对sql操作提供显著的性能改进,使用查询规划(query plan)和测试确定最佳的索引策略。
不要建立过多的索引
太多的索引与不充分、不正确的索引对性能都无益,在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理开支。
7.2版本之后可以反向处理索引,因此任何升序、降序索引的效果都是一样的。 对插入操作,使用fillfactor控制索引页中的空间
优化器按照索引建立顺序选择索引。例如:cola列上建立索引的表和cola,colb,colc上建立的另一个索引效果都是一样的,即对cola过滤时将使用首先建立的索引,而不一定使用最佳索引。
只在读/扫描时使用索引
考虑下面的sql语句
select cola,colb from tab1 where cola='abc1243';
如果colb长度较小(如整形)而cola上有索引,那么可能在cola和colb上建立复合索引会更好些,可通过读取索引项不访问整行而加快查询速度,该方法只对频繁执行的查询有使用价值。
存储过程
可以减少客户机/服务器间的通信量
通过将复杂的应用逻辑交送给服务器,使用存储过程可以减少客户机/服务器间通信量(当然这将增加服务器的运行开支)
避免小的存储过程
存储过程对强制应用逻辑十分有用,但它会导致性能下降,要避免使用只有较少语句的存储过程。
避免嵌套的、递归的存储过程
存储过程调用其它的存储过程,这些存储过程又调用其它的存储过程,这对性能是有害的。
存储过程可以明显减少系统并行查询的能力
系统不能同时进行多个涉及存储过程的查询,但可以并行执行存储过程各自的sql语句。
每行的检测中,where子句表达式中的存储过程都会被计算。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器