Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103682595
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-05-22 17:30:32

  来源:

 

五、 大小写

属于Oracle的关键字大小,表名、列名等小写。

六、 列类型的选择

• 用CHAR(1)代替布尔值;

• 应尽量使用VARCHAR2代替CHAR类型;

• VARCHAR(2)最多4000字符;

• DATE精确到微秒,而非天;

• 使用CLOB代替LONG,BLOB代替LONG RAW;

• ORACLE只有NUMBER一种数据类型,使用时请给定长度;

七、 主键选择

选择有意义的,不太长且能唯一标识记录行的列做主键,没有这种列时,才考虑使用SEQUENCE做主健。

八、 列长度的选择

应当根据实际需要选择列长度。有对应web 页面的,与页面上对应列长度一致。

对数据的验证除数据库端实现外还要尽可能在表现层控制。

九、 使用SQL语句的约定

1. 尽量避免在循环中使用SQL语句。

2. 避免在WHERE字句中对列施以函数:

SELECT *  
FROM service_promotion 
WHERE TO_CHAR(gmt_modified,’yyyy-mm-dd’) 
= ‘20001-09-01’;

而应使用:

SELECT * 
FROM service_promotion 
WHERE gmt_modified 
>= TO_DATE(‘2001-9-01’,’yyyy-mm-dd’) 
AND gmt_modified 
< TO_DATE(‘2001-9-02’,’yyyy-mm-dd’);

3. 避免使用数据库的类型自动功能:

SELECT * FROM category 
WHERE id = ‘123’; -- id’s type is number

4. 避免无效的:

SELECT count(*) 
FROM offer a, count_by_email b 
WHERE a.email(+) = b.email;

5. 连接(join)时要使用别名:

SELECT a.*,b.offer_count(*) 
FROM offer a, count_by_email b 
WHERE a.email(+) = b.email;

6. 取TABLE 的META信息

SELECT * 
FROM table_name 
WHERE rowid is null (or rownum = 1 or pk = impossible_value); 
可考虑使用: 
SELECT * 
FROM table_name 
WHERE 1 = 0 ;
阅读(342) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~