有经验的朋友能否谈谈数据库优化从哪几个方面考虑?
如题
------解决方案--------------------1. 表结构(指的大框架设计) 
 2. 索引 
 3. 数据 
 4. 查询语句
------解决方案--------------------表结构,数据类型,表与表之间的逻辑关系等,只讲得出这些.
------解决方案--------------------纯属补充:(转)   
 --存储衍生数据  
 对一些要做大量重复性计算的过程而言,若重复计算过程得到的结果相同,或计算牵扯多行数据需额外的磁盘I/O开销,或计算复杂需要大量的CPU时间,就考虑存储计算结果(冗余储存)。现予以分类说明:  
 若在一行内重复计算,就在表内增加列存储结果。但若参与计算的列被更新时,必须要用触发器更新这个新列。  
 若对表按类进行重复计算,就增加新表(一般而言,存放类和结果两列就可以了)存储相关结果。但若参与计算的列被更新时,就必须要用触发器立即更新、或存储过程或应用代码批量更新这个新表。  
 若对多行进行重复性计算(如排名次),就在表内增加列存储结果。但若参与计算的列被更新时,必须要用触发器或存储过程更新这个新列。  
 总之,存储冗余数据有利于加快访问速度;但违反了第三范式,这会增加维护数据完整性的代价,必须用触发器立即更新、或存储过程或应用代码批量更新,以维护数据的完整性。      
 --消除昂贵结合  
 对于频繁同时访问多表的一些主要过程,考虑在主表内存储冗余数据,即存储冗余列或衍生列(它不依赖于主键),但破坏了第三范式,也增加了维护难度。在源表的相关列发生变化时,必须要用触发器或存储过程更新这个冗余列。当主要过程总同时访问两个表时可以合并表,这样可以减少磁盘I/O*作,但破坏了第三范式,也增加了维护难度。对父子表和1:1关系表合并方法不同:合并父子表后,产生冗余表;合并1:1关系表后,在表内产生冗余数据。
------解决方案--------------------硬件 
 负载平衡 
 内存 
 I/0速度 
 CPU个数 
 带宽   
 软件 
 表结构(第三泛式) 
 表架构(分区视图) 
 索引(簇级和非簇级,小表不创建索引等) 
 查询技巧(索引的利用)