![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Oracle、SQL Server
cnssk
Go as far as you can see,and when you get there youll see further
展开
-
ORACLE SQL性能优化系列 (八)
25. 用索引提高效率 索引是表的一个概念部分,用来提高检索数据的效率. 实际上,ORACLE使用了一个复杂的自平衡B-tree结构. 通常,通过索引查询数据比全表扫描要快. 当ORACLE找出执行查询和Update语句的最佳路径时, ORACLE优化器将使用索引. 同样在联结多个表时使用索引也可以提高效率. 另一个使用索引的好处是,它提供了主键(primary key)的唯一性验证. 除了那些L原创 2004-09-03 11:53:00 · 645 阅读 · 0 评论 -
Oracle优化经典文章------磁盘I/O和碎片篇
Oracle优化经典文章------磁盘I/O和碎片篇不平衡的磁盘I/O和撤消会妨碍性能。这里讨论如何正确定位和配置一些与Oracle数据库相关的物理数据文件。 主要讨论以下内容:[1] 使用磁盘阵列 选择合理的RAID方式。[2] 在可用的硬盘之间分布关键数据文件 要特别注意的文件:system表空间、TEMPORARY表空间、回滚段或UNDO表空间、联机重做日志文件(最好放在最快的转载 2008-04-13 18:36:00 · 525 阅读 · 0 评论 -
监控数据库性能的SQL
监控数据库性能的SQL 1. 监控事例的等待 select event,sum(decode(wait_Time,0,0,1)) "rev", sum(decode(wait_Time,0,1,0)) "Curr",count(*) "Tot" from v$session_Wait group by event order by 4; 2. 回滚段的争用情况 select name, waits转载 2008-04-13 18:40:00 · 570 阅读 · 0 评论 -
Oracle优化经典文章------索引原理篇
Oracle提供了大量索引选项。知道在给定条件下使用哪个选项对于一个应用程序的性能来说非常重要。一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程终止。而如果做出正确的选择,则可以合理使用资源,使那些已经运行了几个小时甚至几天的进程在几分钟得以完成,这样会使您立刻成为一位英雄。这篇文章就将简单的讨论每个索引选项。主要有以下内容:[1] 基本的索引概念 查询DBA_INDEXES视图转载 2008-04-13 18:33:00 · 390 阅读 · 0 评论 -
Oracle中对像名大小写敏感性的深入解析
一般情况下,使用者在进行ORACLE开发或管理里都不会对ORACLE对像名大小写进行区别,因为ORALCE在普通情况下会将所有小写都转换为大写进行处理,所以可以说是大小写不敏感的。但是实际ORACLE内部有它一套完整的对像名处理方式。本文将从实例进行分析与探讨ORACLE对像名大小写敏感性的处理机制。 可能很多人在工作已经了解到,ORACLE在创建对像时是可以加引号的,如果不加引号转载 2008-04-17 17:45:00 · 503 阅读 · 0 评论 -
如何查看数据库每个表占用的磁盘空间
SQL Server:create table tmp (name varchar(50),rows int,reserved varchar(50), data varchar(50),index_size varchar(50),unused varchar(50)) insert into tmp (name,rows,reserved, data,index_size,unused转载 2008-04-30 11:49:00 · 1356 阅读 · 0 评论 -
CBO,RBO在ORACLE中的应用
ORACLE 提供了CBO、RBO两种SQL优化器。CBO在ORACLE7 引入,但在ORACLE8i 中才成熟。ORACLE 已经明确声明在ORACLE9i之后的版本中(ORACLE 10G ),RBO将不再支持。因此选择CBO 是必然的趋势。 CBO和 RBO作为不同的SQL优化器,对SQL语句的执行计划产生重大影响,如果要对现有的应用程序从RBO向CBO移植,则必须充分考虑这转载 2008-05-09 11:12:00 · 449 阅读 · 0 评论 -
连接Oracle 10g时ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME 错误的解决
安装Oracle 10g:如果只是本机的访问 sqlplus system/manager这样是没有问题的。但是如果使用 sqlplus system/manager@orcl的时候却会报ora-12514的错误。解决方法:1. 打开/network/admin/listener.ora文件,找到: SID_LIST_LISTENER = (SID_LIST = (SID_DESC原创 2008-07-15 12:54:00 · 1150 阅读 · 0 评论 -
SQL Server访问SYBASE中的表
SQL Server访问Sybase中的表: 一、安装sybase客户端 使用版本:Sybase Client 11.9.2 for NT (1)当安装完成后,运行开始->程序->sybase->Dsedit (2)选择菜单的Server Object,-> Add 输入服务名 例如 1.60 (3)然后在Server列表中选择1.60,双击右边的对话框server原创 2008-05-13 12:45:00 · 446 阅读 · 0 评论 -
索引什么时候重建和重建方法讨论
一提到索引,大家都知道,但是怎样建索引,什么时候重建索引,重建索引用什么方法,可能有的就不太清楚了,我根据一些资料简单的整理一点,如果哪里不对或是不妥请大家指点,希望大家有更好经验也share出来。 索引的目的是为了加快寻找数据的速度,但是如果对表经常做改动,则索引也会相应改动,时间长了,查询速度的效率就会降低,就有可能要重建索引,那么什么时候需要重建索引和用什么方法重建索引可能是大家关心的。 一原创 2008-05-13 12:47:00 · 2357 阅读 · 0 评论 -
Oracle常用SQL优化Hint语句
在进行sql执行过程中,由于有时候系统自动优化的方式并不是最优的。需要我们手工添加hint来提高查询效率。1. /*+ALL_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=SCOTT; 2.转载 2008-08-05 15:05:00 · 614 阅读 · 0 评论 -
在存储过程中拥有"role"权限的特殊性
在Oracle数据库中,用户拥有的role权限在存储过程是不可以使用的。 示例如下: SQL> select * from dba_role_privs where grantee=TEST;GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE------------ ------------ ------------ ---转载 2008-08-05 15:30:00 · 438 阅读 · 0 评论 -
EXECUTE IMMEDIATE用法小解
EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTEIMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTEIMMEDIATE,因为它获的收益在包转载 2008-10-19 15:54:00 · 750 阅读 · 0 评论 -
基于自定义函数的Function-Based索引创建
在oralce中给自建函数创建索引,结果不成功。source:Create Index IDX_T_SP_TWOTYPESTAT_0_f On T_SP_TWOTYPESTAT_0(f_dateadd(yearmonth,12,2)); err:the function is not deterministic. 我们看一下这是为什么?随便一个测试可以再现这个问题,我门创建一个转载 2009-03-16 16:15:00 · 448 阅读 · 0 评论 -
Oracle 11g 新特性-PL/SQL部分
· 结果集缓存(Result Set Caching) 这一特性能大大提高很多程序的性能。在一些MIS系统或者OLAP系统中,需要使用到很多"selectcount(*)"这样的查询。在之前,我们如果要提高这样的查询的性能,可能需要使用物化视图或者查询重写的技术。在11g,我们就只需要加一个/*+result_cache*/的提示就可以将结果集缓存住,这样就能大转载 2009-04-17 15:09:00 · 586 阅读 · 0 评论 -
如何加密Oracle中的存储过程
如何加密Oracle中的存储过程,从而在schema下看不到其源码? 软件环境: 1、操作系统:Windows 2000 Server 2、数 据 库:Oracle 8i R2 (8.1.7) for NT 企业版 3、安装路径:C:/ORACLE 实现方法:1、 D:/>set NLS_LANG=AMERICAN_AMERICA.USACII7或 D:/>原创 2004-09-16 16:44:00 · 1088 阅读 · 0 评论 -
奔腾4上win2000环境下无法安装oracle8i的问题
P4的计算机最好安装ORACLE 9I 如果不方便的话可以按照以下的方法安装ORACLE 8I (其实也不是所有的P4CPU都不可以安装ORACLE8 I 我的一台P4 1。7 安装ORACLE 8.1.6就一点问题没有) 在P4机器上安装Oracle 8i 一、系统环境及准备工作 硬件: Intel P4的处理器 256M的内存 硬盘有三个分区C、D、E,光驱为F 软件:原创 2004-09-16 16:43:00 · 1807 阅读 · 0 评论 -
ORACLE汉字显示的字符集问题
ORACLE汉字显示的字符集问题 ---- 在国内外大中型数据库管理系统中,把ORACLE作为数据库管理平台的用户比较多。ORACLE 不论是数据库管理能力还是安全性都是无可非议的,但是,它在汉字信息的显示方面着实给中国用户带来不少麻烦,笔者多年从事ORACLE数据库管理,经常收到周围用户和外地用户反映有关ORACLE数据库汉字显示问题的求援信,主要现象是把汉字显示为不可识别的乱码,造成原来大原创 2004-09-16 16:39:00 · 842 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十四)
46. 连接多个扫描 如果你对一个列和一组有限的值进行比较, 优化器可能执行多次扫描并对结果进行合并连接. 举例: SELECT * FROM LODGING WHERE MANAGER IN (‘BILL GATES,KEN MULLER); 优化器可能将它转换成以下形式 SELECT * FROM LODGING WHERE MANAGER = ‘BILL GATES OR MANAG原创 2004-09-03 11:58:00 · 779 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十一)
36. 用UNION替换OR (适用于索引列) 通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描. 注意, 以上规则只针对多个索引列有效. 如果有column没有被索引, 查询效率可能会因为你没有选择OR而降低. 在下面的例子中, LOC_ID 和REGION上都建有索引. 高效: SELECT LOC_ID , LOC_DESC , REG原创 2004-09-03 11:55:00 · 666 阅读 · 0 评论 -
更该数据字典props$解决字符集问题
1. )Use SQL*Plus connect to database as user SYS 2. )Issue this below command SQL> UPDATE PROPS$ SET VALUE$=xxx WHERE NAME=NLS_CHARACTERSET; 3.) Shutdown database and restart it原创 2004-09-16 16:42:00 · 864 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (三)
8. 使用DECODE函数来减少处理时间 使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表. 例如: SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%; SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0030 AND ENA原创 2004-09-03 11:50:00 · 608 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (四)
13. 计算记录条数 和一般的观点相反, count(*) 比count(1)稍快 , 当然如果可以通过索引检索,对索引列的计数仍旧是最快的. 例如 COUNT(EMPNO) (译者按: 在CSDN论坛中,曾经对此有过相当热烈的讨论, 作者的观点并不十分准确,通过实际的测试,上述三种方法并没有显著的性能差别) 14. 用Where子句替换HAVING子句 避免使用HAVING子句, HAVING原创 2004-09-03 11:50:00 · 625 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (六)
20. 用表连接替换EXISTS 通常来说 , 采用表连接的方式比EXISTS更有效率 SELECT ENAME FROM EMP E WHERE EXISTS (SELECT ‘X FROM DEPT WHERE DEPT_NO = E.DEPT_NO AND DEPT_CAT = ‘A); (更高效) SELECT ENAME FROM DEPT D,EMP E WHERE E.DEPT_原创 2004-09-03 11:52:00 · 606 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (七 )
24. 用EXPLAIN PLAN 分析SQL语句 EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称. 你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果是用缩进的格式排列的, 最内部的操作将被最原创 2004-09-03 11:53:00 · 732 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十)
31. 强制索引失效 如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) . 举例: SELECT ENAME FROM EMP WHERE EMPNO = 7935 AND DEPTNO + 0 = 10 /*DEPTNO上的索引将失效*/ AND EMP_TYPE || ‘ = ‘A /*EMP_TYPE上的索引将失效*/ 这是一原创 2004-09-03 11:55:00 · 646 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十二)
39. 总是使用索引的第一个列 如果索引是建立在多个列上, 只有在它的第一个列(leading column)被where子句引用时,优化器才会选择使用该索引. 译者按: 这也是一条简单而重要的规则. 见以下实例. SQL> create table multiindexusage ( inda number , indb number , descr varchar2(10)); Table c原创 2004-09-03 11:56:00 · 655 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十三)
43. 用WHERE替代ORDER BY ORDER BY 子句只在两种严格的条件下使用索引. ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序. ORDER BY中所有的列必须定义为非空. WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列. 例如: 表DEPT包含以下列: DEPT_CODE PK NOT NULL DEPT_DESC NOT NULL原创 2004-09-03 11:57:00 · 702 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (一)
关键字 ORACEL SQL Performance tuning 出处 http://www.dbasupport.com 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST原创 2004-09-03 11:47:00 · 697 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (二)
4. 选择最有效率的表名顺序(只在基于规则的优化器中有效) ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM子句中最后的那个表)并对记录原创 2004-09-03 11:48:00 · 583 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (五)
17. 使用表的别名(Alias) 当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误. (译者注: Column歧义指的是由于SQL中不同的表具有相同的Column名,当SQL语句中出现这个Column时,SQL解析器无法判断这个Column的归属) 18. 用EXISTS替代IN 在许多基于基原创 2004-09-03 11:51:00 · 534 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (九)
27. 基础表的选择 基础表(Driving Table)是指被最先访问的表(通常以全表扫描的方式被访问). 根据优化器的不同, SQL语句中基础表的选择是不一样的. 如果你使用的是CBO (COST BASED OPTIMIZER),优化器会检查SQL语句中的每个表的物理大小,索引的状态,然后选用花费最低的执行路径. 如果你用RBO (RULE BASED OPTIMIZER) , 并且所有的连原创 2004-09-03 11:54:00 · 654 阅读 · 0 评论 -
Oracle物化视图建立方法
Oracle的物化视图提供了强大的功能,可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。转载 2009-04-19 10:58:00 · 725 阅读 · 0 评论