对于数据库优化:
数据库优化的目标无非是避免磁盘I/O瓶颈、减少CPU利用率和减少资源竞争
基于第三范式的数据库表设计具有很多优点:
一是消除了冗余数据,节省了磁盘存储空间;
二是有良好的数据完整性限制,即基于主外键的参照完整限制和基于主键的实体完整性限制,这使得数据容易维护,也容易移植和更新;
三是数据的可逆性好,在做连接(Join)查询或者合并表时不遗漏、也不重复;
四是因消除了冗余数据(冗余列),在查询(Select)时每个数据页存的数据行就多,这样就有效地减少了逻辑I/O,
五是对大多数事务(Transaction)而言,运行性能好;
六是物理设计(Physical Design)的机动性较大,能满足日益增长的用户需求。
所有常用于查询中的Where子句的列
和所有用于排序的列创建索引,可以避免整表扫描或访问,在不改变表的物理结构的情况下,
直接访问特定的数据列,这样减少数据存取时间;
利用索引可以优化
或排除耗时的分类*作;把数据分散到不同的页面上,就分散了插入的数据;主键自动建立了唯一索引
,因此唯一索引也能确保数据的唯一性(即实体完整性);索引码越小,定位就越直接;新建的索引效能最好,
因此定期更新索引非常必要。
一个表只能有一个聚族索引,可有多个非聚族索引。
使用聚族索引查询数据要比使用非聚族索引快。
① 聚族索引(Clustered Index):聚族索引的数据页按物理有序储存,占用空间小。
选择策略是,被用于Where子句的列:包括范围查询、模糊查询或高度重复的列(连续磁盘扫描);
被用于连接Join*作的列;
被用于Order by和Group by子句的列。聚族索引不利于插入*作,另外没有必要用主键建聚族索引。
② 非聚族索引(Nonclustered Index):与聚族索引相比,占用空间大,而且效率低。
选择策略是,被用于Where子句的列:
包括范围查询、模糊查询(在没有聚族索引时)、主键或外键列、点(指针类)或小范围(返回的结果域小于整表数据的20%)查询;
被用于连接Join*作的列、主键列(范围查询);被用于Order by和Group by子句的列;需要被覆盖的列。
防范sql注入的方法无非有以下几种:
1.使用类型安全的SQL参数
2.使用参数化输入存储过程
3.使用参数集合与动态SQL
4.输入滤波
5.过滤LIKE条款的特殊字符