![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
iteye_8183
这个作者很懒,什么都没留下…
展开
-
数据库SQL优化相关(转)
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, ...2010-04-16 13:28:03 · 65 阅读 · 0 评论 -
数据库设计经验之--数据库的设计
1、对使用数据库的系统进行分类:联机事务处理系统OLTP,联机分析处理系统OLAP。针对OLTP和OLAP系统特性的不同,分离实时数据库与非实时数据库,除非必要的查询,所有的查询尽量放在非实时数据库上。可以用相关数据库产品技术或做应用开发来使得我们拥有两个在线的数据库,一个用来在线事务的处理(可以只写),另一个用来已提交事务的相关查询(可以只读)。2、实时库中,可分为三类表空间,进行不同的...2010-04-16 13:29:54 · 115 阅读 · 0 评论 -
数据库设计经验之--表的设计
1、定义一些字典表,在命名字段并为其指定数据类型的时候要保证一致性,可以在字典表里定义常用字段的名称、类型、枚举值及其对应的意思。枚举值可以用整型(有大小关系,例如:权限级别)或短字符代码(便于扩充,例如:渠道标识),这样在实际表记录中字段值可以较小,对于大表可以省空间,同时提高表扫描的效率。2、尽量不要使用auto_increment类型字段作为主键,这样会使分布、备份、还原有一定的问题...2010-04-16 13:30:32 · 186 阅读 · 0 评论 -
数据库设计经验之--索引的设计
1、索引应该有足够的区分度,对区分度不大的列(例如枚举类型字段),不应该做索引(这时候应该考虑加上诸如时间范围这样的限制条件对记录进行筛选)。对一个表中最影响性能的列,可以考虑做聚簇索引。2、小表少建索引或不建索引,可以加载到内存中访问。3、索引字段一般为差异性较大、长度较小的类型,在这些字段上经常做一些选择性查询、排序、分组、关联操作。外键作为表关联字段,如果常作关联查询,可以建...2010-04-16 13:31:02 · 202 阅读 · 0 评论 -
数据库设计经验之--存储过程编写
1、数据库访问,最好全部固化成存储过程,保存在数据库中。同时尽量不使用trigger机制,难以管理及查错。2、数据库操作时,仅选择有用列。除非有充足理由,不应该出现select * 的形式。3、存储过程中尽量少用会引起存储过程重新编译的脚本,例如:动态sql语句、临时表、DDL语句。4、以DB2为例,只读操作加上for fetch(read) only,如果只需要检索结果的...2010-04-16 13:31:38 · 229 阅读 · 0 评论 -
数据库设计经验之--应用程序开发
1、缓存数据库配置、枚举定义表信息,减少对数据库的访问。2、使用连接池,并且控制最大连接数。3、数据库访问都通过存储过程实现,尽量不要直接操作表。4、如果一个业务多次调用不同的存储过程,可以考虑合并在一个存储过程中,减少数据库访问。5、合并业务请求,同类型请求合并成一个大请求,提交给数据库。6、应用程序使用内存缓存操作极其频繁的表,缓存的内容可以精简,但要注...2010-04-16 13:32:09 · 110 阅读 · 0 评论 -
数据库设计经验之--安全问题
1、所有的SQL exception 信息都不能直接返回给客户端。2、在任何情况下使用完Connection后都要释放连接,特别是在抛出异常的时候也要释放Connection。3、表中的用户敏感信息要加密存储,最好在加密的时候加入几位随机数。4、所有的数据库访问都用preparestatement的方式或者封装为存储过程。5、配置文件中的数据库访问用户名和密码都加密...2010-04-16 13:32:46 · 137 阅读 · 0 评论 -
数据库设计经验之--数据库应用检视
1、数据库索引创建检查。包括:(a)索引字段应为差异性较大、长度较小的类型,枚举类型字段不要建索引;(b)防止创建包含过多字段的复合索引;(c)索引字段的值不要出现过多空值或重复值。2、数据库索引使用检查。包括:(a)对表的数据操作(尤其是对大表的查询)是否用到了合适的索引;(b)对于插入型的实时表,保证新记录插入到索引顺序的最后面;(c)如果有复合索引,要按建立索引字段的顺序(取前面部分...2010-04-16 13:33:26 · 88 阅读 · 0 评论 -
SQL With Nolock
with nolock 相当于 READ UNCOMMITTED事务隔离级别. 注:----------------------------------------------READUNCOMMITTED 指定允许脏读。这表示不发放共享锁,也不遵守排它锁。允许脏读会导致更高的并发性,但会降低一致性。如果指定了 READUNC...原创 2010-10-21 17:04:06 · 162 阅读 · 0 评论