全球旧事资料 分类
引,所以DML(增、删、改)的代价更高,要综合考虑;
424索引列的选择:如果检索条件有可能包含多列,创建联合主键或者联合索引,把最常用于检索条件的列放在最前端,其他的列排在后面;不要索引使用频繁的小型表,假如这些小表有频繁的DML就更不要建立索引,维护索引的代价远远高于扫描表的代价;
425主键索引在建立的时候一定要明确的指定名称,不能让系统默认建立主键索引(可能有些数据库无法指定主键名,则例外);
426外键必须需建索引。当有一定数据量,并且经常以外键所在列为关联,进行关联查询时,需要建索引(可能有些数据库自动为外键建索引,则例外);
f427当有联合主键或者联合索引时,注意不要建重复的索引。举例说明:
4271表EMPLOYEES,它的主键是建立在列DEPARTID和EMPLOYEEID上的联合主键,并且创建主键的语句中DEPARTID在前,EMPLOYEEID在后。在这样一个表里,通常就没有必要再为DEPARTID建一个索引了;联合索引的情况也一样;
4272更复杂的情况,比如表EMPLOYEES,有一个索引建立在列CORPIDDEPARTIDEMPLOYEEID三列上,在创建语句中也依据上述顺序,就没有必要再为CORPID建立索引;也没有必要再建立以CORPID在前,DEPARTID在后的联合索引;如果EMPLOYEEID需要索引,那么为EMPLOYEEID建立一个索引是不与上面的索引重复的;DEPARTID列也类似;
428控制一个表的索引数量,尽量使得一个表的索引数量小于五个;
43视图的设计
431在不太清楚视图用法的情况下,尽量不建。因为一旦建了,就有被滥用的危险;
432如果需要建视图,只要是打算长期使用的,请写入数据库设计中。明确它的用途、目的;
433建立视图时要明确写出所有要选择出的列名而不要以SELECT来代替,可以使结构清晰可读性增强,也不会增加它对表的所有字段的依赖,而表是很可能修改的,特别是增加字段。就很有可能导致使用该视图的应用程序出错;
44存储过程、函数、触发器的设计
441触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假如你确实需要采用触发器,一定要经过测试再应用在生产系统中,而且必须集中对它文档化。
442请把程序包、存储过程、函数、触发器,与应用程序一同加入CVS中,进行版本控制。因为此四者包含了代码,应用程序对他们的依赖程度比对表、视图的依赖程度更高;
443适量但尽量少使用存储过程、函数、触发器。使用存储过程、函数、触发器的影响:
1可以减少数据库与客户端的交互,提高性能;
f2有的数据库还对他们进行了某种程度的编译,在执行r
好听全球资料 返回顶部