1。SQL语句对系统的影响非常大,可以会因为一条sql语句而对项目造成巨大的影响。——例如使用statement而非preparestatement插入大数据量。
数据库项目失败原因:
1、常常是因为对数据库认识的不足。如前期使用Hibernate经常会发生效率问题。将开发人员与数据库进行了分隔。
2、要对数据库的原理有充分的认识(如:表以及索引的设计)
例如:如选择char或varchar字段!(时间和空间) 索引有很多种……
3、项目往往是与数据库“耦合”的。无法做到同一条sql语句在所有的数据库中都能够运行良好。(数据库存在方言:1、日期函数、2转换函数、3、分页 4、锁机制…)
4、数据量比较大的容易产生性能问题。
6、由于业务上的原因,会产生很多“垃圾”数据,这些数据经常也会影响到一个系统的正常运行。
数据库开发注意事项
1、在OLTP(在线事务处理,以增删改查为主的业务系统)中要使用绑定变量,在JDBC中要使用预编译SQL。
2、在公司,禁止在jdbc中使用默认的AutoCommit
3、如果是大数据量导入,要使用Oracle的专门的工具(如sqlloader)
4、尽量使用一个sql处理
5、尽量用数据库约束来完成数据较验。如果需要提示业务异常,可以考虑使用触发器
6、在OLTP中尽量避免大事务(类似于全表操作)
7、尽量避免分表设计
8、不要在选择率不高的字段上建索引
9、多条件查询(where deptno=? and empno=? and sal=?),要与索引的顺序(create index indx_all on emp(deptno,empno,sal))保持一致
10、小表上不用建索引
11、计算列使用不了索引——select * from emp where upper(ename)=?则 create index index_ename on emp(ename) 用不到
12、避免索引字值数据类型转换
13、不要在子查询中执行order by
14、尽快commit或rollback,可以减少锁定。——update emp set sal=1000 where empno=1000;==select * from emp where empno=1000 for update;
15、清空表用truncate命令。
16、正确使用数据库的连接——当sql执行失败时,也要保证关闭连接;不要频繁的连接和关闭数据库,除非使用了连接池;一定要使用连接池