JAVA—咖啡馆

——欢迎访问rogerfan的博客,常来《JAVA——咖啡馆》坐坐,喝杯浓香的咖啡,彼此探讨一下JAVA技术,交流工作经验,分享JAVA带来的快乐!本网站部分转载文章,如果有版权问题请与我联系。

BlogJava 首页 新随笔 联系 聚合 管理
  447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

【数据库】

收集数据库相关技术文章
     摘要: 分析函数2(Rank, Dense_rank, row_number)



目录
===============================================
1.使用rownum为记录排名
2.使用分析函数来为记录排名
3.使用分析函数为记录进行分组排名

一、使用rownum为记录排名:

在前面一篇《Oracle开发专题之:分析函数》,我们认识了分析函数的基本应用,现在我们再来考虑下面几个问题:

①对所有客户按订单总额进行排名
②按区域和客户订单总额进行排名
③找出订单总额排名前13位的客户
④找出订单总额最高、最低的客户
⑤找出订单总额排名前25%的客户  阅读全文
posted @ 2016-02-26 13:01 rogerfan 阅读(316) | 评论 (0)  编辑

posted @ 2015-09-26 16:49 rogerfan 阅读(352) | 评论 (0)  编辑

     摘要: 本文是关于MySQL数据库性能优化方面的问题,希望对初中级MySQL DBA以及其他对MySQL性能优化感兴趣的朋友们有所帮助。
在平时被问及最多的问题就是关于MySQL数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级MySQL DBA以及其他对MySQL性能优化感兴趣的朋友们有所帮助。

数据库属于IO密集型的应用程序,其主职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是IO,尽可能将磁盘IO转化为内存IO。本文先从MySQL数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化:

•query_cache_size/query_cache_type (global)

Query cache作用于整个MySQL Instance,主要用来缓存MySQL中的ResultSet,也就是一条SQL语句执行的结果集,所以仅仅只能针  阅读全文
posted @ 2015-09-10 19:22 rogerfan 阅读(399) | 评论 (0)  编辑

     摘要: mysql cache功能分析:

1 mysql的cache功能的key的生成原理是:把select语句按照一定的hash规则生成唯一的key,select的结果生成value,即 key=>value。所以对于cache而言,select语句是区分大小写的,也区分空格的。两个select语句必须完完全 全一致,才能够获取到同一个cache。

2 生成cache之后,只要该select中涉及到的table有任何的数据变动(insert,update,delete操作等),相 关的所有cache都会被删除。因此只有数据很少变动的table,引入mysql 的cache才较有意义。关于这方面的测试,可以参考:《Query Cache,看上去很美》一文。

所以,mysql的cache功能只适用于下列场合:数据变动较少,select较多的table。

那么。在复杂的系统中,如何使用mysql的cache功能呢,基本方法如下:

配置query_cache_type,同时改写程序。

quer  阅读全文
posted @ 2015-09-10 19:20 rogerfan 阅读(426) | 评论 (0)  编辑

posted @ 2014-07-16 11:58 rogerfan 阅读(2986) | 评论 (0)  编辑

     摘要: PowerDesigner对数据库反向建立PDM可以使用sql方式,这个很简单,直接导入建表sql文件就可以了。
要说的是使用数据库做源的建模方式,以前弄过一次,很久没弄忘了,这次要弄在网上搜了一下,结果不太满意,于是自己重新整理了一个步骤,贴出来共享一下,也算给自己做个备忘。

注意事先安装好Oracle客户端,并且正确配置好tns。

1、 新建PDM:
选择菜单File->New Model,【Model type】选择Physical Data Model,【Model name】 自由命名,【DBMS】选择“ORACLE Version 10gR2”,OK。  阅读全文
posted @ 2014-02-10 09:29 rogerfan 阅读(2325) | 评论 (0)  编辑

posted @ 2013-03-31 05:17 rogerfan 阅读(1293) | 评论 (0)  编辑

     摘要: 最近做一个项目,客户希望可以自己选择想要查看的列表,这样就不好办了,选择列表的名字他们也想自定义,没办法这就需要查看数据表中字段,中文说明,默认标志了。在网上查了部分资料但是发现粘上去的代码都存在问题,无奈只好自己修改了一下,代码如下:

如下代码能正常运行,都是网上查找资料最后拼凑总结出来的。条件就自己加吧。网上好像也有不少类型的东西,这里留着以备不时只需!  阅读全文
posted @ 2013-03-31 04:59 rogerfan 阅读(844) | 评论 (0)  编辑

     摘要: 如果做表单自定义或做数据库管理软件,就必须能自动取得某个用户下数据库的一些信息。比较有用的有:
表名,字段英文名,字段中文名,字段的类型,字段的长度等。其中,字段的中文名按照数据库的记录是无法取到的,但是我们可以变通一下,
通过comments去记录字段中文名。
//取得该用户下所有的表
select * from user_tables;
//取得表名为Sysuser的注释信息
select * from user_tab_comments where table_name = 'SYSUSER';
//取得该用户下表名为Sysuser表的结构
select * from user_tab_columns where table_name='SYSUSER';
//取得该用户下表名为sysuser表中字段的注释信息
select * from user_col_comments where table_name = 'SYSUSER';  阅读全文
posted @ 2013-03-31 04:46 rogerfan 阅读(2457) | 评论 (0)  编辑

     摘要: 目标:
本文主要介绍PowerDesigner中概念数据模型 CDM的基本概念。

一、概念数据模型概述
数据模型是现实世界中数据特征的抽象。数据模型应该满足三个方面的要求:
1)能够比较真实地模拟现实世界
2)容易为人所理解
3)便于计算机实现

概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。

通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系(Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是我们所说的CDM;然后再将CDM转换为计算机上某个DBMS所支持的数据模型,这样的模型就是物理数据模型,即PDM。  阅读全文
posted @ 2013-02-28 21:53 rogerfan 阅读(578) | 评论 (0)  编辑

     摘要: 1. SELECT子句中避免使用 “*”
当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法.不幸的是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将“*” 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间.

2.使用DECODE函数来减少处理时间
使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表. 例如:
Sql代码 1.SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%’;
2.SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE ‘SMITH%’;
SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%’;   阅读全文
posted @ 2010-11-19 14:06 rogerfan 阅读(552) | 评论 (0)  编辑

     摘要: Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理
最近把平时在项目中常用到的数据库分页sql总结了下。大家可以贴出分页更高效的sql语句。
sqlserver分页
第一种分页方法
需用到的参数:
pageSize 每页显示多少条数据
pageNumber 页数 从客户端传来
totalRecouds 表中的总记录数 select count (*) from 表名
totalPages 总页数
totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1
pages 计算前pages 条数据
pages= pageSize*(pageNumber-1)   阅读全文
posted @ 2010-09-28 09:37 rogerfan 阅读(872) | 评论 (0)  编辑

posted @ 2010-08-16 14:45 rogerfan 阅读(249) | 评论 (0)  编辑

posted @ 2010-08-11 16:11 rogerfan 阅读(531) | 评论 (0)  编辑

posted @ 2010-07-13 10:23 rogerfan 阅读(428) | 评论 (0)  编辑

     摘要: 对比版本
Release 10.2.0.1.0 XE windowsXP
5.0.45-community-nt-log MySQL Community Edition (GPL)

当作计算器
SQL> select 1+1 from dual;
mysql> select 1+1;

mysql> select 1+1 from dual;

显示表结构
SQL> desc 表名
mysql> desc 表名;

SQL> describe 表名
mysql> describe 表名;

mysql> explain 表名;

注意:explain 也可以用来获取执行计划。

需要访问:

User_tables、user_tab_cols、USER_COL_COMMENTS、USER_INDEXES等等字典表。
mysql> show columns fro  阅读全文
posted @ 2010-07-08 15:40 rogerfan 阅读(1514) | 评论 (0)  编辑

     摘要: 方法1:
适用于 SQL Server 2000/2005
SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
)
ORDER BY id
  阅读全文
posted @ 2010-04-30 10:26 rogerfan 阅读(1171) | 评论 (0)  编辑

     摘要: SQL Server 2000企业版本适用于WIN 2000操作系统,Windows 2003操作系统和Windows XP一般装不了,只能安装个人版,这让我们用XP操作系统的程序员很头疼,为了使用SQL Server 2000还得装个Windows 2000操作系统,下面介绍一下在Windows XP下安装SQL Server 2000企业版的方法。

一、在SQL服务器的安装盘中找到MSDE这个目录,并且点击SETUP.EXE安装它,过程简单,直接下一步就OK 了。

二、重启系统Windows XP,在任务栏右下角就可以看到SQL服务的图标出现了。

三、再拿出SQL服务器版的安装光盘,直接安装客户端工具,安装方法:点击光盘根目录下的AUTORUN.EXE,选择“安装SQL Server 2000组件“,选择”安装数据库服务器“, 根据提示安装,自检过程中会提示操作系统不是SERVER版,只安装客户端工具。  阅读全文
posted @ 2010-04-28 17:07 rogerfan 阅读(302) | 评论 (0)  编辑

     摘要: Oracle数据库的三种标准的备份方法:
1.导出/导入(EXP/IMP)。

2.热备份。

3.冷备份。

注释:导出备件是一种逻辑备份,冷备份和热备份是物理备份。

一、 导出/导入(Export/Import)

利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。

1、简单导出数据(Export)和导入数据(Import)

Oracle支持三种方式类型的输出:   阅读全文
posted @ 2010-04-27 09:25 rogerfan 阅读(302) | 评论 (0)  编辑

     摘要: 当你需要同时包含日期和时间信息的值时则使用DATETIME类型。MySQL以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。(“支持”表示尽管先前的值可能工作,但没有保证)。

当你只需要日期值而不需要时间部分时应使用DATE类型。MySQL用'YYYY-MM-DD'格式检索和显示DATE值。支持的范围是'1000-01-01'到 '9999-12-31'。

TIMESTAMP列类型的属性不固定,取决于MySQL版本和服务器运行的SQL模式。这些属性将在本节后面描述。
  阅读全文
posted @ 2010-04-24 07:57 rogerfan 阅读(15903) | 评论 (0)  编辑

     摘要: 本章介绍Oracle 9i网络中两种主要的成分——数据库服务器和治理客户机的安装和配置过程。本章目的在于帮助读者把握如何安装Oracle 9i以及如何配置Oracle 9i网络环境。
本书采用windows 2000 Server作为安装的网络操作系统平台,数据库服务器采用Oracle 9i Database for Windows 2000的企业版。
2.1.1 安装的硬件环境需求
下列从5个主要的方面阐述Oracle 9i对硬件环境的要求。
1. 对CPU的要求
CPU最低配置到Pentium 166就可以。
2. 对内存的要求
内存容量最低为64MB,最好在256MB以上。
3. 对硬盘的要求
建议配置8GB容量以上硬盘。
4. 对光驱的要求
建议选用快速光驱,16倍速以上。
5. 对网卡的要求
一般可以选用10/100MB自适应网卡。  阅读全文
posted @ 2010-03-24 15:55 rogerfan 阅读(268) | 评论 (0)  编辑

     摘要: 汇总:
set autotrace on
set autotrace traceonly explain
set timing on

或通过SQL*PLUS trace,然后查看user_dump_dest下的跟踪文件,使用tkprof工具格式化后阅览。
alter session set events '10046 trace name context forever,level 12';
alter session set events '10046 trace name context off';
SELECT p.spid,s.username FROM v$session s,v$process p WHERE s.audsid=USERENV('sessionid') AND s.paddr = p.addr;

使用方法示例:
DBserver% sqlplus perf/perf
SQL*Plus: Release 9.2.0.6.0 - Production on Mon  阅读全文
posted @ 2010-03-24 14:51 rogerfan 阅读(582) | 评论 (0)  编辑

     摘要: 一、下载

1、PowerDesigner 12.5官方下载地址 +|'}kOAa
 http://download.sybase.com/eval/PowerDesigner/powerdesigner125_eval.exe
 大小125 MB (132,006,349 字节) uzR(8lA
  阅读全文
posted @ 2010-03-17 16:09 rogerfan 阅读(55454) | 评论 (36)  编辑

     摘要: 为了减轻DBA的工作,数据库自动备份当然少不了,今天我和大家一起来学习通过crontab实现mysql数据的自动备份

我们在/etc/cron.daily/目录下创建文件backup内容如下

#!/bin/bash
#定义变量name的值,/bin/date日期格式为Y年-m月-d日
name=`/bin/date "+%Y-%m-%d"`
#/usr/bin/mysqldump 备份数据库的命令路径
#-u root 数据库的用户名
#-p password 数据库的密码把password替换成你自己的密码  阅读全文
posted @ 2009-08-19 11:54 rogerfan 阅读(620) | 评论 (0)  编辑

     摘要: 首先,设置mysql的环境变量(在path中添加%MYSQL_HOME%\bin),重启电脑。
完整代码:
/**
* @param args
*/
public static void main(String[] args) {
/*
* 备份和导入是一个互逆的过程。
* 备份:程序调用mysql的备份命令,读出控制台输入流信息,写入.sql文件;
* 导入:程序调用mysql的导入命令,把从.sql文件中读出的信息写入控制台的输出流
* 注意:此时定向符">"和"<"是不能用的
*/
backup();
load();
}
  阅读全文
posted @ 2009-08-18 17:38 rogerfan 阅读(555) | 评论 (0)  编辑

     摘要: 一、了解备份的重要性

  可以说,从计算机系统出世的那天起,就有了备份这个概念,计算机以其强大的速度处理能力,取代了很多人为的工作,但是,往往很多时候,它又是那么弱不禁风,主板上的芯片、主板电路、内存、电源等任何一项不能正常工作,都会导致计算机系统不能正常工作。当然,这些损坏可以修复,不会导致应用和数据的损坏。但是,如果计算机的硬盘损坏,将会导致数据丢失,此时必须用备份恢复数据。

  其实,在我们的现实世界中,已经就存在很多备份策略,如RAID技术,双机热备,集群技术发展的不就是计算机系统的备份和高可用性吗?有很多时候,系统的备份的确就能解决数据库备份的问题,如磁盘介质的损坏,往往从镜相上面做简单的恢复,或简单的切换机器就可以了。但是,上面所说的系统备份策略是从硬件的角度来考虑备份与恢复的问题,这是需要代价的。我们所能选择备份策略的依据是:丢是数据的代价与确保数据不丢失的代价之比。还有的时候,硬件的备份有时根本满足不了现实需要,假如你误删了一个表,但是你又想恢复的时候,数据库的备份就变的重要了。ORACLE本身就提供了强大的备份与恢复策略,这里我  阅读全文
posted @ 2009-06-02 16:07 rogerfan 阅读(264) | 评论 (0)  编辑

     摘要: ----------------------------------------------------------------
用户授权:
GRANT ALTER ANY INDEX TO "user_id "
GRANT "dba " TO "user_id ";
ALTER USER "user_id " DEFAULT ROLE ALL
创建用户:
CREATE USER "user_id " PROFILE "DEFAULT " IDENTIFIED BY " DEFAULT TABLESPACE "USERS " TEMPORARY TABLESPACE "TEMP " ACCOUNT UNLOCK;
GRANT "CONNECT " TO "user_id ";
用户密码设定:
ALTER USER "CMSDB " IDENTIFIED BY "pass_word "
表空间创建:
CREATE TABLESPACE "table_space " LOGGING DATAFILE '  阅读全文
posted @ 2009-06-02 16:06 rogerfan 阅读(658) | 评论 (0)  编辑

     摘要: 13-4 Lob类型
13.4.1 基本介绍
Oracle和plsql都支持lob(large object) 类型,用来存储大数量数据,如图像文件,声音文件等。Oracle 9i realse2支持存储最大为4g的数据,oracle 10g realse1支持最大8到128万亿字节的数据存储,依赖于你的db的block size。
在plsql中可以申明的lob类型的变量如下:
类型 描述
BFILE 二进制文件,存储在数据库外的操作系统文件,只读的。把此文件当二进制处理。
BLOB 二进制大对象。存储在数据库里的大对象,一般是图像声音等文件。
CLOB 字符型大对象。一般存储大数量文本信息。存储单字节,固定宽度的数据。
NCLOB 字节字符大对象。存储单字节大块,多字节固定宽度,多字节变宽度数据。  阅读全文
posted @ 2009-06-02 16:02 rogerfan 阅读(1712) | 评论 (0)  编辑

     摘要: 环境区域是用来处理SQL语句的一个oracle存储区域。游标是指向它的指针或句柄。通过游标,PL/SQL程序可以控制这个环境区域中被处理的语句。

Oracle中的游标有两种:显式游标、隐式游标。

显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理,而隐式游标是在执行插入(insert)、删除(delete)、修改(update)和返回单条记录的查询(select)语句时由PL/SQL自动定义的。
  阅读全文
posted @ 2009-06-02 16:01 rogerfan 阅读(3481) | 评论 (0)  编辑

     摘要: ORACLE 游标

一. PL/SQL 是用游标来管理 SQL 的 SELECT 语句的 . 游标是为了处理这些语句而分配的一大块内存 . 它提供了对一个结果集进行逐行处理的能力 , 可看作是一种特殊的指针 . 它与某个查询结果集相关联 , 可以指向结果集的任意位置 , 以便对指定位置的数据进行处理 . 使用它可以在查询数据的同时对数据进行处理 .

二. 游标的分类 : 静态游标和动态游标

1. 在说明游标分类之前, 先说明一下PL/SQL 的两个操作, 游标属性, 变量属性

SET SERVEROUTPUT ON ;-- 此语句用于开启打印输出功能

DMBS_OUTPUT.PUT_LINE();-- 打印输出并换行.
  阅读全文
posted @ 2009-06-02 16:00 rogerfan 阅读(1143) | 评论 (0)  编辑

     摘要: 1、Sysdate 当前日期和时间


SQL> Select sysdate from dual;

SYSDATE
----------
21-6月 -05
  阅读全文
posted @ 2008-03-26 10:23 rogerfan 阅读(748) | 评论 (0)  编辑

     摘要: 常用oracle函数
SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32  阅读全文
posted @ 2008-03-03 11:08 rogerfan 阅读(374) | 评论 (0)  编辑

     摘要: 在SQLPLUS下,实现中-英字符集转换
alter session set nls_language='AMERICAN';
alter session set nls_language='SIMPLIFIED CHINESE';
主要知识点:
  阅读全文
posted @ 2008-02-29 13:31 rogerfan 阅读(684) | 评论 (0)  编辑

     摘要: Oracle时间日期操作
sysdate+(5/24/60/60) 在系统时间基础上延迟5秒
sysdate+5/24/60 在系统时间基础上延迟5分钟
sysdate+5/24 在系统时间基础上延迟5小时
sysdate+5 在系统时间基础上延迟5天
add_months(sysdate,-5) 在系统时间基础上延迟5月
add_months(sysdate,-5*12) 在系统时间基础上延迟5年  阅读全文
posted @ 2008-02-29 13:12 rogerfan 阅读(1302) | 评论 (1)  编辑

     摘要: 这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励。

一:无返回值的存储过程

存储过程为:

CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS

BEGIN


END TESTA;
  阅读全文
posted @ 2007-09-26 08:30 rogerfan 阅读(354) | 评论 (0)  编辑

     摘要: 1.日期时间间隔操作

当前时间减去7分钟的时间
select sysdate,sysdate - interval '7' MINUTE from dual
当前时间减去7小时的时间
select sysdate - interval '7' hour from dual
当前时间减去7天的时间
select sysdate - interval '7' day from dual
当前时间减去7月的时间
select sysdate,sysdate - interval '7' month from dual
当前时间减去7年的时间
select sysdate,sysdate - interval '7' year from dual
时间间隔乘以一个数字
select sysdate,sysdate - 8 *interval '2' hour from dual
  阅读全文
posted @ 2007-09-17 09:00 rogerfan 阅读(498) | 评论 (0)  编辑

     摘要: Oracle的SQL函数分为单行函数和多行函数。单行函数只对单条记录有效,多行函数对多条记录有效。


单行函数包括,字符、数字、日期、转换和普通函数。


字符函数举例:

全小写 LOWER('SQL Course') sql course
全大写 UPPER('SQL Course') SQL COURSE
首字母大写 INITCAP('SQL Course') Sql Course
拼接 CONCAT('Good', 'String') GoodString
取子串 SUBSTR('String',1,3) Str
求长度 LENGTH('String') 6
  阅读全文
posted @ 2007-09-17 09:00 rogerfan 阅读(372) | 评论 (0)  编辑

     摘要: (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.
(2) WHERE子句中的连接顺序.:
ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
(3) SELECT子句中避免使用 ‘ * ‘:
ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间
  阅读全文
posted @ 2007-09-17 08:56 rogerfan 阅读(367) | 评论 (0)  编辑

     摘要: 1. 选用适合的ORACLE优化器

ORACLE的优化器共有3种:

a. RULE (基于规则)
b. COST (基于成本)
c. CHOOSE (选择性)

设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖。

为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性。

如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过analyze命令有关。 如果table已经被analyze过, 优化器模式将自动成为CBO , 反之,数据库将采用RULE形式的优化器。
阅读全文
posted @ 2007-09-17 08:43 rogerfan 阅读(1085) | 评论 (1)  编辑

     摘要: 目录

1.sql存储过程概述
2.SQL存储过程创建
3.sql存储过程及应用
4.各种存储过程使用指南
5.ASP中存储过程调用的两种方式及比较
6.SQL存储过程在.NET数据库中的应用
7.使用SQL存储过程要特别注意的问题  阅读全文
posted @ 2007-09-10 12:54 rogerfan 阅读(1582) | 评论 (0)  编辑

     摘要: 1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
END 存储过程名字  阅读全文
posted @ 2007-09-10 12:47 rogerfan 阅读(230) | 评论 (0)  编辑

     摘要: 其实基本上有三种方法:

1、使用SQL Server 2005中新增的ROW_NUMBER

几种写法分别如下:



1SELECT TOP 20 * FROM (SELECT
2 ROW_NUMBER() OVER (ORDER BY Namec) AS RowNumber,
3 *
4FROM
5 dbo.mem_member) _myResults
6WHERE
7 RowNumber > 10000  阅读全文
posted @ 2007-09-10 11:10 rogerfan 阅读(229) | 评论 (0)  编辑

     摘要: 1. Access method(访问方法):此步骤包括从文件中存储和检索记录。
2. Alias(别名):某属性的另一个名字。在SQL中,可以用别名替换表名。
3. Alternate keys(备用键,ER/关系模型):在实体/表中没有被选为主健的候选键。
4. Anomalies(异常)参见更新异常(update anomalies)
5. Application design(应用程序设计):数据库应用程序生命周期的一个阶段,包括设计用户界面以及使用和处理数据库的应用程序。   阅读全文
posted @ 2007-09-10 09:30 rogerfan 阅读(332) | 评论 (1)  编辑

     摘要: 表A记录如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115

表B记录如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408  阅读全文
posted @ 2007-09-10 09:18 rogerfan 阅读(338) | 评论 (0)  编辑

     摘要: 1. SQL优化的原则是:将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。
调整不良SQL通常可以从以下几点切入:
? 检查不良的SQL,考虑其写法是否还有可优化内容
? 检查子查询 考虑SQL子查询是否可以用简单连接的方式进行重新书写
? 检查优化索引的使用
? 考虑数据库的优化器   阅读全文
posted @ 2007-09-10 09:04 rogerfan 阅读(404) | 评论 (0)  编辑