一、关键字段建立索引
关键字段说明:主键、外键、在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
建索引不局限与单个列索引,当查询中经常包含多个列时可考虑建组合索引、非聚集索引。
约束:条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。
经验:
- 索引的追求的目标的提高速度,但不是越多的索引就越好。参考一下URL,创建缺失索引(未创建、未考虑到)、删除当前数据库中使用较少的索引或者写入次数大于读取次数的索引。
URL:http://www.cnblogs.com/worfdream/articles/2840582.html
- 定期重建或者重新组织产生一定碎片的索引,提高查询效率。
由著名大师Ola Hallengren 编写的免费脚本以及使用方法。下载地址如下所示:
URL:http://download.csdn.net/detail/daiyueqiang/5279782
二、使用存储过程
预编译的SQL,它使SQL变得更加灵活和高效。
三、避免查询中使用Left Join、Right Join
设计表与表之间的关系(外键)时,强制外键非空,对应的外键表添加一条记录(暂无此类别--名称自定义)。
理由:LEFT JOIN 、RIGHT JOIN消耗的资源非常之多,因为它们包含与 NULL(不存在)数据匹配的数据。在某些情况下,这是不可避免的,但是代价可能非常高。故从数据库设计角度避免此操作。
四、备份数据库和清除垃圾数据
五、SQL语句语法的优化。(可以用Sybase的SQL Expert,可惜我没找到unexpired的序列号)
下载地址:
六、清理删除日志
七、设计操作性数据库
当数据库数据量规模比较大,对于经常操作或者查询的数据存放在操作性数据库中。
周期性的将操作性数据库数据更新到总数据库中,重新创建索引。
优点:
- 查询数据量少,速度快。
- 操作和读取分开,便于总数据库进行大数据量查询分析
- 对于近阶段数据的的分析统计更加快捷
缺点:
- 操作性数据库周期难于确定。不同干系人对于周期的大小,各执其辞。
- 查询最近以及历史数据,需要跨数据库链接查询,影响效率
- 待续
八、数据表的命名规则:http://www.cnblogs.com/worfdream/articles/1886129.html
九、未完待续