oracle索引

oracle 逻辑对象

元气小坏坏 提交于 2019-11-27 10:29:12
视图 视图的作用: a 让查询返回的字段更容易理解。 b 对复杂select语句的封装。 c 安全性。视图可以单独授权。对于数据量巨大的表,可以创建视图仅仅返回前100条数据,将该视图select权限开放。但是不开放表的select权限。 --grant create view to resource; --a 让查询返回的字段更容易理解 create or replace view vw_emp as select empno 员工号,ename 员工名,job 工作岗位,sal 工资 from emp; select *from vw_emp; --b 对复杂的sql语句进行封装 --、薪水大于1200的雇员,按照部门编号进行分组,分组后平均薪水必须大于1500,查询各分组的平均水平,按照工资的倒序进行排列。* create or replace view vw_avg_sal as select deptno,avg(sal) avg_sal from emp where sal>1200 group by deptno having avg(sal)>1500 order by avg(sal) desc; select * from vw_avg_sal; --c安全性 试图可以单独授权,对于数据量巨大的表,可以创建视图仅仅返回前100条数据,将该视图select权限开放

【转载】MySQL数据库面试题

落爺英雄遲暮 提交于 2019-11-27 08:41:34
一,对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题: a)、索引的目的是什么? 快速访问数据表中的特定信息,提高检索速度 创建唯一性索引,保证数据库表中每一行数据的唯一性。 加速表和表之间的连接 使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间 b)、索引对数据库系统的负面影响是什么? 负面影响: 创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。 c)、为数据表建立索引的原则有哪些? 在最频繁使用的、用以缩小查询范围的字段上建立索引。 在频繁使用的、需要排序的字段上建立索引 d)、 什么情况下不宜建立索引? 对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引。 对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等。 二,简述在MySQL数据库中MyISAM和InnoDB的区别 区别于其他数据库的最重要的特点就是其插件式的表存储引擎。切记:存储引擎是基于表的,而不是数据库。 InnoDB与MyISAM的区别: InnoDB存储引擎: 主要面向OLTP(Online Transaction Processing,在线事务处理)方面的应用

Mysql类

混江龙づ霸主 提交于 2019-11-27 05:54:07
架构层面可以采用读写分离,主从复制等等,在数据库前端加cache,如memcache,用于用户登录,商品查询 1.mysql优化的原则是什么? 答: 1.mysql的优化首先要从设计表的过程中就要做到合理规划,表的字段,尽量精确,比如能用char就不要用varchar,能用tinyint就不要用int。 2.索引的添加要适当,需要添加的地方就添加,不需要添加的地方就不要添加 3.读写尽量分离 4.编写存储过程的时候尽量不要用select * 5.mysql服务器硬件的配置尽量高点 6.选择合适的mysql引擎 2.你有做过哪些mysql的优化? 必做的2个优化: long_query_time = 2 lower_case_table_names = 1 因为默认mysql慢查询默认定义的时间是10s,这样还是有点高,所以我通常会修改其为2s,lower_case_table_names的作用是不区分大小写,通常也会开启,然后其他的会根据具体情况去进行优化:比如 当你发现mysql日志中 Too Many Connections 的错误提示,则需要增大max_connections的值 当你的物理内存比较大,而磁盘IO又比较高的时候可以适当增大table_cache的值 如果你的表是myisam表,可以适当设置key_buffer_size的值,你可以通过show

SQL优化总结(转)

本秂侑毒 提交于 2019-11-27 04:17:55
转载: http://www.cnblogs.com/ziyiFly/archive/2008/12/24/1361380.html 一、问题的提出  在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性。   在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种SQL语句就是所谓的劣质SQL语句。在编写SQL语句时我们应清楚优化器根据何种原则来删除索引,这有助于写出高性能的SQL语句。    二、SQL语句编写注意问题   下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度的极大降低

oracle常见基础知识

不羁岁月 提交于 2019-11-27 01:24:04
oracle使用的脚本语言称为什么? PL-SQL oracle中游标的分类? oracle中游标分为两类:显示游标和隐式游标 oracle中function与procedure的区别? (1) function一定要有返回值,但procedure不需要返回值 (2) procedure可以返回多个返回值 (3) 在SQL数据操纵语句(DML:select、update、delete、insert)中只能调用function而不能调用procedure oracle导如\出数据有哪几种方式? (1) 通过oracle工具 exp\imp:导入\出的数据是二进制数据 (2) 通过plsql相关工具:导入\出的数据是文本文件 oracle中存在哪几种格式的文件? 数据文件(.dbf、ora)、日志文件(.log)、控制文件(.ctl) oracle中常见的优化的方法? (1) 建合适的索引:减少IO次数 (2) 将索引数据和表数据分开在不同的表空间上:减低IO冲突 (3) 建立表分区,将数据分别存储在不同表分区上:空间换时间思想 (4) 将数据库表按一定的规则进行逻辑分割 (5) 按规则编写SQL语句 (5.1) SQL全部大写或小写 (5.2) 尽量使用占位符?而不直接使用字符 (5.3) 多表查询时,选择数据最少的表放在右边作为基础表,比如存在中间表时 (5.4)

MyISAM和InnoDB在索引上的差别及其它区别

戏子无情 提交于 2019-11-27 00:57:46
  首先我们知道MyISM和InnoDB索引都是由B+树实现的,但在索引管理数据方式上却有所不同。   InnoDB是聚集索引,数据文件是和(主键)索引绑在一起的,即索引 + 数据 = 整个表数据文件,通过主键索引到整个记录,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,因为辅助索引是以建索引的字段为关键字索引到主键,所以需要两次,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。话不多说上图:   主键索引:以主键索引到整条记录      辅助索引:以另一字段索引到主键 MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。也就是说:InnoDB的B+树主键索引的叶子节点就是数据文件,辅助索引的叶子节点是主键的值;而MyISAM的B+树主键索引和辅助索引的叶子节点都是数据文件的地址指针。   主键索引:以关键字索引到记录的地址   辅助索引:以某字段索引到记录地址      从索引实现方面我们也可以看出来InnoDB表数据文件本身就是索引文件,他们是一个整体,而对于MyISAM来说数据文件和索引文件则是分开的。    锁方面:   mysql支持三种锁定级别,行级、页级、表级;   MyISAM支持表级锁定,提供与 Oracle

Oracle重建表索引及手工收集统计信息

耗尽温柔 提交于 2019-11-27 00:17:35
Oracle重建所有表的索引的sql: SELECT 'alter index ' || INDEX_NAME || ' rebuild online nologging;' FROM USER_INDEXES WHERE TABLESPACE_NAME = 'xxx' AND STATUS = 'VALID' AND TEMPORARY = 'N' AND INDEX_TYPE = 'NORMAL' AND PARTITIONED = 'NO';   然后把结果放到PLSQL命令容器执行即可。 Oracle收集统计信息常用 DBMS_STATS包中的方法,比较常用的如: dbms_stats.gather_index_stats dbms_stats.gather_table_stats dbms_stats.gather_database_stats    转载于:https://www.cnblogs.com/jmax/p/3745280.html 来源: https://blog.csdn.net/weixin_30364147/article/details/99222611

Oracle 建立索引及SQL优化

你离开我真会死。 提交于 2019-11-27 00:05:22
如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。 建设原则:  1、索引应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%。则应该考虑。  2、对于两表连接的字段,应该建立索引。如果经常在某表的一个字段进行Order By 则也经过进行索引。  3、不应该在小表上建设索引。 优缺点:  1、索引主要进行提高数据的查询速度。 当进行DML时,会更新索引。因此索引越多,则DML越慢,其需要维护索引。 因此在创建索引及DML需要权衡。 创建索引:  单一索引:Create Index <Index-Name> On <Table_Name>(Column_Name);  复合索引: Create Index i_deptno_job on emp(deptno,job); —>在emp表的deptno、job列建立索引。   select * from emp where deptno=66 and job='sals' ->走索引。   select * from emp where deptno=66 OR job='sals' ->将进行全表扫描。不走索引   select * from emp where deptno=66 ->走索引。

数据库设计经验谈

梦想的初衷 提交于 2019-11-26 21:45:06
数据库设计经验谈 一个成功的管理系统,是由: [50% 的业务 + 50% 的软件 ] 所组成,而 50% 的成功软件又有 [25% 的数据库 + 25% 的程序 ] 所组成,数据库设计的好坏是一个关键。如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课程里也有专门的讲述。不过,就如我们反复强调的那样,再好的老师也比不过经验的教诲。所以我归纳历年来所走的弯路及体会,并在网上找了些对数据库设计颇有造诣的专业人士给大家传授一些设计数据库的技巧和经验。精选了其中的 60 个最佳技巧,并把这些技巧编写成了本文,为了方便索引其内容划分为 5 个部分: 第 1 部分 - 设计数据库之前 这一部分罗列了 12 个基本技巧,包括命名规范和明确业务需求等。 第 2 部分 - 设计数据库表 总共 24 个指南性技巧,涵盖表内字段设计以及应该避免的常见问题等。 第 3 部分 - 选择键 怎么选择键呢?这里有 10 个技巧专门涉及系统生成的主键的正确用法,还有何 时以及如何索引字段以获得最佳性能等。 第 4 部分 - 保证数据完整性 讨论如何保持数据库的清晰和健壮,如何把有害数据降低到最小程度。 第 5 部分 - 各种小技巧 不包括在以上 4 个部分中的其他技巧,五花八门,有了它们希望你的数据库开发工作会更轻松一些。 第 1 部分 -

oracle 常用SQL查询

这一生的挚爱 提交于 2019-11-26 21:38:28
一、ORACLE的启动和关闭 1 、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle > svrmgrl SVRMGR > connect internal SVRMGR > startup SVRMGR > quit b、关闭ORACLE系统 oracle > svrmgrl SVRMGR > connect internal SVRMGR > shutdown SVRMGR > quit 启动oracle9i数据库命令: $ sqlplus / nolog SQL * Plus: Release 9.2 . 0.1 . 0 - Production on Fri Oct 31 13 : 53 : 53 2003 Copyright (c) 1982 , 2002 , Oracle Corporation. All rights reserved. SQL > connect / as sysdba Connected to an idle instance. SQL > startup ^ C SQL > startup ORACLE instance started. 2 、在双机环境下 要想启动或关闭ORACLE系统必须首先切换到root用户,如下 su - root a