oracle索引

Oracle索引修复 ,ORA-00600: internal error code, arguments: [6200],

百般思念 提交于 2019-12-01 19:37:10
Oracle索引修复 ,ORA-00600: internal error code, arguments: [6200], 问题背景:客户反馈DB每天产生的incident日志很多,需要排查原因 查看alert日志发现大量的ORA-07445、ORA-00600错误 Errors in file /data/oracle/diag/rdbms/bydata/bydata/trace/bydata_mmon_3667.trc (incident=111052): ORA-00600: internal error code, arguments: [6200], [18446744073709551615], [], [], [], [], [], [], [], [], [], [] Exception [type: SIGSEGV, SI_KERNEL(general_protection)] [ADDR:0x0] [PC:0x2278EA1, kghstack_err()+85] [flags: 0x0, count: 1] Errors in file /data/oracle/diag/rdbms/bydata/bydata/trace/bydata_mmon_3667.trc (incident=111053): ORA-07445: exception

Oracle索引

隐身守侯 提交于 2019-12-01 05:10:25
为经常查询的字段创建索引,不经常查询的字段不用索引 大表建立索引才有意义 经常结合where的字段加索引 不超过4个 缺点 占用更大的空间(约1.2倍) 更新数据的时候会使用更多的时间 创建索引 语法 1 CREATE INDEX 索引名 ON 表名(列名,...) 组合索引 经常合并查询的时候,可以创建组合索引,把能迅速减小范围的放后面 查看索引 字段为unique的字段会自动添加索引 语法 1 select index_name, index_type from USER_INDEXS where table_name="表名" 原文: 大专栏 Oracle索引 来源: https://www.cnblogs.com/dajunjun/p/11658066.html

Oracle索引

一个人想着一个人 提交于 2019-12-01 05:09:45
为经常查询的字段创建索引,不经常查询的字段不用索引 大表建立索引才有意义 经常结合where的字段加索引 不超过4个 缺点 占用更大的空间(约1.2倍) 更新数据的时候会使用更多的时间 创建索引 语法 1 CREATE INDEX 索引名 ON 表名(列名,...) 组合索引 经常合并查询的时候,可以创建组合索引,把能迅速减小范围的放后面 查看索引 字段为unique的字段会自动添加索引 语法 1 select index_name, index_type from USER_INDEXS where table_name="表名" 原文: 大专栏 Oracle索引 来源: https://www.cnblogs.com/wangziqiang123/p/11658027.html

oracle 基于索引优化

自作多情 提交于 2019-12-01 04:53:57
1、user_ind_statistics表:索引统计信息表   Oracle中有三种类型的对象统计信息:表统计、列统计和索引统计。而在每种类型中,有细分为:表或索引级别的统计、分区级别统计和子分区级别的统计,后面两种只有在对象被分区和具有子分区的情况下才可用。 来源: https://www.cnblogs.com/yaohuiqin/p/11655821.html

mysql开发规范文档

最后都变了- 提交于 2019-12-01 04:09:25
Author:sakte Time:2013/02/27 mysql开发规范文档 1.mysql数据库命名规范 2.表结构设计、数据类型选择 3.开发注意事项 1.mysql数据库命名规范 1.1 命名规范: Table/view/procedure/function/package : object类型简称+功能模块简称的小写字母+“_”+业务意义小写单词,如: 主键/ 外键/索引: object类型简称+”_”+表名简称+字段名 object 类型简称 : Table:t View:v Procedure:p Function:fn Package:pk 主键 :pk 外键 :fk 索引 :idx Eg: Trader后台功能:tbk_ operate_log 搜索功能表:ts_operate_log 索引命令:idx_tablename_column 2.表结构设计、数据类型选择 2.1 常用数据类型 : 整型:tinyint,smallint,mediumint,int,bigint。一般int就够用了 浮点型:DECIMAL(M,D)精准,不建议用DECIMAL,建议乘以固定倍数转换成整数存储,可以节省存储空间,且不会带来任何附加维护成本 TINYINT>SMALLINT>MEDIUMINT>INT>BIGINT>DECIMAL(存储空间逐渐变大,而性能却逐渐变小)。

oracle查询表信息(索引,外键,列等)

a 夏天 提交于 2019-12-01 02:44:02
oracle查询表信息(索引,外键,列等) oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1、查询出所有的用户表 select * from user_tables 可以查询出所有的用户表 select owner,table_name from all_tables; 查询所有表,包括其他用户表 通过表名过滤需要将字母作如下处理 select * from user_tables where table_name = upper('表名') 因为无论你建立表的时候表名名字是大写还是小写的,create语句执行通过之后,对应的user_tables表中的table_name字段都会自动变为大写字母,所以必须通过内置函数upper将字符串转化为大写字母进行查询,否则,即使建表语句执行通过之后,通过上面的查询语句仍然查询不到对应的记录。 2、查询出用户所有表的索引 select * from user_indexes 3、查询用户表的索引(非聚集索引): select * from user_indexes where uniqueness='NONUNIQUE' 4、查询用户表的主键(聚集索引): select * from user_indexes where uniqueness='UNIQUE'

SQL操作符的优化

情到浓时终转凉″ 提交于 2019-12-01 02:27:44
操作符优化 IN 操作符   用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。   但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:   ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。   推荐方案:在业务密集的SQL当中尽量不采用IN操作符。    NOT IN操作符   此操作是强列推荐不使用的,因为它不能应用表的索引。   推荐方案:用NOT EXISTS 或(外连接+判断为空)方案代替   <> 操作符(不等于)   不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。   推荐方案:用其它相同功能的操作运算代替,如   a<>0 改为 a>0 or a<0   a<>’’ 改为 a>’’   IS NULL 或IS NOT NULL操作(判断字段是否为空)   判断字段是否为空一般是不会应用索引的,因为B树索引是不索引空值的。   推荐方案:   用其它相同功能的操作运算代替,如   a is not null 改为 a>0 或a>’’等。  

Oracle 模糊查询 优化

隐身守侯 提交于 2019-12-01 02:16:12
模糊查询是数据库查询中经常用到的,一般常用的格式如下: (1)字段 like '%关键字%' 字段包含"关键字“的记录 即使在目标字段建立索引也不会走索引,速度最慢 (2)字段 like '关键字%' 字段以"关键字"开始的记录 可以使用到在目标字段建立的升序索引 (3)字段 like '%关键字' 字段以"关键字“结束的记录 可以使用到目标字段建立的降序索引 对于无法使用索引的 '%关键字%' 模式,有没有办法优化呢,答案是肯定的, 在ORacle中提供了instr(strSource,strTarget)函数,比使用'%关键字%'的模式效率高很多。 instr函数说明: INSTR   (源字符串, 目标字符串, 起始位置, 匹配序号)   在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始   到字符的结尾就结束。   语法如下:   instr( string1, string2 [, start_position [, nth_appearance ] ] )   参数分析:   string1   源字符串,要在此字符串中查找。   string2   要在string1中查找的字符串.   start_position   代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1.

SQL优化

我的未来我决定 提交于 2019-12-01 02:06:57
1、选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. 2、WHERE子句中的连接顺序.: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 3、SELECT子句中避免使用 ‘ * ‘: ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 4、减少访问数据库的次数: ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等; 5、在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为200 6、使用DECODE函数来减少处理时间: 使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表. 7、整合简单

数据库优化的思路

倖福魔咒の 提交于 2019-12-01 01:47:29
数据库优化的思路 SQL优化 在我们书写SQL语句的时候,其实书写的顺序、策略会影响到SQL的性能,虽然实现的功能是一样的,但是它们的性能会有些许差别。 因此,下面就讲解在书写SQL的时候,怎么写比较好。 ①选择最有效率的表名顺序 数据库的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表将被最先处理 在FROM子句中包含多个表的情况下: 如果三个表是完全无关系的话,将记录和列名最少的表,写在最后,然后依次类推 也就是说:选择记录条数最少的表放在最后 如果有3个以上的表连接查询: 如果三个表是有关系的话,将引用最多的表,放在最后,然后依次类推。 也就是说:被其他表所引用的表放在最后 例如:查询员工的编号,姓名,工资,工资等级,部门名 emp表被引用得最多,记录数也是最多,因此放在form字句的最后面 ②WHERE子句中的连接顺序 数据库采用自右而左的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之左,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的之右。 emp.sal可以过滤多条记录,写在WHERE字句的最右边 select emp.empno,emp.ename,emp.sal,dept.dname from dept,emp where (emp.deptno = dept.deptno) and (emp