在大型项目中,我想在困扰大家的主要问题为数据库的操作,本人就在项目中遇到了一些问题,在这里和大家交流下。
◆1、 本人项目中有一个复杂视图,数据量在2千万以上,每次对这个视图进行操作时,反映都很慢,而且这个视图还经常用到,我当时想到的是缓存起来,可是因为数据量很大,缓存到服务器端是不现实的,我们项目组用到了一种解决方案,把此视图填充到物理表中,对此物理表设置索引,但是又怕用户查询记录时正好在填充物理表的时候,所以可以设置2个物理表,来回切换,即:第一次填充物理表A,第二次填充物理表B,下次再填充物理表A,如此反复,和.NET的根据时间缓存数据原理类似。大家可能会想到索引视图,可是索引视图限制太多,例如:不允许使用outer join 运算;表也不能与他自己连接;不允许进行子查询;定义索引视图的SELECT 语句不能包含下列关键词:UNION、TOP、DISTINC、COMPUTE或者HAVING;不能包含通配符,所以不是很不实用。
◆2、 不要在数据表中用到自增长字段,因为再和其它数据库导insert脚本时,是不能控制自增长列的值的。
◆3、 尽量少用外键约束,可以靠代码实现,外键约束会使数据库维护起来相当麻烦,尤其是在大项目中。