首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

读书笔记-《基于Oracle的SQL优化》-第一章-3

访问索引的方法: (1)、索引唯一性扫描:INDEX UNIQUE SCAN,适用于where条件中是等值查询的目标SQL。...(2)、索引范围扫描:INDEX RANGE SCAN,扫描的对象是唯一性索引,目标SQL的where条件一定是范围查询(谓词条件为BETWEEN、等);扫描的对象是非唯一性索引,对目标SQL...在同等条件下,目标索引的索引的数量大于1,索引范围扫描所耗费的逻辑读至少会比相应的索引唯一性扫描多1。 (3)、索引全扫描:指要扫描目标索引所有叶子块的所有索引。...索引跳跃式扫描:INDEX SKIP SCAN,它使那些在where条件中没有对目标索引的前导指定查询条件同时又对该索引的非前导指定了查询条件的目标SQL依然可以用上该索引,这就像在扫描该索引跳过了它的前导...Oracle中的索引跳跃式扫描适用于那些目标索引前导的distinct数量较少,后续非前导的可选择性又非常好的情形,因为索引跳跃式扫描的执行效率一定会随着目标索引前导的distinct数量的递增而递减

77320
您找到你想要的搜索结果了吗?
是的
没有找到

实战讲解MySQL执行计划,面试官当场要了我

查询使用属于单个索引一部分的,MySQL可以使用此连接类型。 explain select title from film; 1.4.3 range 使用索引查询检索给定范围内的。...1.4.9 ref 对于先前表中的每个组合,将从该表中读取具有匹配索引所有。...如果连接使用键的最左前缀,或者如果该键不是PRIMARY KEY(主键)或UNIQUE(唯一)索引(即如果连接无法根据键值选择单行),则会使用ref。...连接使用索引的所有部分并且索引是PRIMARY KEY或UNIQUE NOT NULL索引,将使用它。...因为只有一,所以优化器的其余部分可以将这一视为常量。 const表非常快,因为它们读取一次。 将PRIMARY KEY或UNIQUE索引的所有部分与常量值进行比较,将使用const。

1.3K10

MySQL中SQL执行计划详解

数据规模比较大的时候,sql执行的时候,执行计划不同,会直接影响sql的执行速度。这个时候,就需要对sql语句执行进行调试。...两个表联查使用索引的所有部分(针对的是组合索引),且索引是 主键或唯一索引使用它。使用“=”运算符来进行索引的比较。   4.ref 非唯一索引扫描,返回某个匹配所有。常用语非唯一索引。...Full scan on NULL key优化程序无法使用索引查找访问方法,子查询优化将作为回退策略发生。 Impossible HAVING该HAVING子句始终为false,无法选择任何。...Range checked for each record MySQL发现没有好的索引可以使用,发现在前面的表的可能会使用某些索引。...然后对键进行排序,并按排序顺序检索 Using index 使用索引树中的信息从表中检索信息,而不必另外寻找读取实际查询使用属于单个索引的,可以使用此策略。

3.1K20

SqlServer 索引

索引类型 •          唯一索引:唯一索引不允许两具有相同的索引 •          主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。...唯一索引: 唯一索引不允许两具有相同的索引。 如果现有数据中存在重复的键值,则大多数数据库都不允许将新创建的唯一索引与表一起保存。新数据将使表中的键值重复,数据库也拒绝接受此数据。...例如,如果在stuInfo表中的学员员身份证号(stuID) 列上创建了唯一索引,则所有学员的身份证号不能重复。 提示:创建了唯一约束,将自动创建唯一索引。...主键索引要求主键中的每个唯一的。当在查询中使用主键索引,它还允许快速访问数据。 聚集索引(clustered index) 在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同。...–         该用于频繁搜索 –         该用于对数据进行排序 •          请不要使用下面的创建索引: –         包含几个不同的

3.1K90

【21】进大厂必须掌握的面试题-65个SQL面试

主键 是一(或的集合)或一组唯一标识表中的每一唯一标识表中的一 不允许为空 示例-在学生表中,Stu_ID是主键。 Q8。 什么是约束?...它用于从满足联接条件的多个表中返回所有。 左连接: MySQL中的左连接用于返回左表中的所有返回右表中满足连接条件的匹配。...右连接: MySQL中的右连接用于返回右表中的所有返回满足连接条件的左表中的匹配。 完全联接: 任何表中都存在匹配项,完全联接将返回所有记录。...第一范式(1NF) –行内没有重复的组 第二范式(2NF) –每个非键(支持)都取决于整个主键。 第三范式(3NF) –取决于主键,而没有其他非键(支持)。 Q23。...插入数据如何在中插入NULL? 可以通过以下方式插入NULL: 隐式地通过从列表中省略。 通过在VALUES子句中指定NULL关键字来显式 Q36。”

6.6K22

SQL命令 DISTINCT

DISTINCT BY (item {,item2}) - 可选-返回按(项)唯一选择。 ALL - 可选-返回结果集中的所有。默认设置。...它将每个不同(唯一)返回的行数限制为一个任意。如果未指定DISTINCT子句,则默认情况下显示满足选择条件的所有。...如果DISTINCT子句中指定的包含NULL(不包含),则DISTINCT将返回一作为DISTINCT(唯一)的NULL,如以下示例所示: SELECT DISTINCT FavoriteColors...星号语法:DISTINCT*语法是合法的,没有意义,因为根据定义,所有行都包含一些不同的唯一标识符。不同于(*)的语法不合法。...如果SELECT不包含FROM子句,则DISTINCT是合法的,没有意义。 聚合函数:可以在聚合函数中使用DISTINCT子句,以选择要包含在聚合中的不同(唯一)字段

4.4K10

python数据科学系列:pandas入门详细教程

或字典(用于重命名标签和标签) reindex,接收一个新的序列与已有标签匹配,原标签中不存在相应信息,填充NAN或者可选的填充值 set_index/reset_index,互为逆操作,...切片形式访问按行进行查询,又区分数字切片和标签切片两种情况:输入数字索引切片时,类似于普通列表切片;输入标签切片时,执行范围查询(即无需切片首末存在于标签中),包含两端标签结果,无匹配行时返回为空...例如,标签类型(可通过df.index.dtype查看)为时间类型,若使用无法隐式转换为时间的字符串作为索引切片,则引发报错 ? 切片形式返回查询,且为范围查询 ?...,要求每个df内部列名是唯一的,两个df间可以重复,毕竟有相同才有拼接的实际意义) merge,完全类似于SQL中的join语法,支持横向拼接,通过设置连接字段,实现对同一记录的不同信息连接,支持...unique、nunique,也是适用于series对象,统计唯一信息,前者返回唯一结果列表,后者返回唯一个数(number of unique) ?

13.9K20

实战讲解MySQL的expain执行计划,面试官当场要了我

查询使用属于单个索引一部分的,MySQL可以使用此连接类型。 explain select title from film; 1.4.3 range 使用索引查询检索给定范围内的。...1.4.9 ref 对于先前表中的每个组合,将从该表中读取具有匹配索引所有。...如果连接使用键的最左前缀,或者如果该键不是PRIMARY KEY(主键)或UNIQUE(唯一)索引(即如果连接无法根据键值选择单行),则会使用ref。...连接使用索引的所有部分并且索引是PRIMARY KEY或UNIQUE NOT NULL索引,将使用它。...因为只有一,所以优化器的其余部分可以将这一视为常量。 const表非常快,因为它们读取一次。 将PRIMARY KEY或UNIQUE索引的所有部分与常量值进行比较,将使用const。

76650

关于Oracle 数据块、B树索引和5种索引扫描

适用于where条件是等值查询的SQL,因为扫描对像是唯一索引,所有扫描结果最多只返回一记录 2、INDEX RANGE SCAN【索引范围扫描】 如果查询条件相同的情况下...对于单一建立的索引(单一索引),该索引无非空约束,在具体检索中只检索该全部数据,且是对该的统计(count)或者非空条件查询(is not null),会使用“索引全扫描”。...对于单一建立的索引(单一索引),该索引无非空约束,在具体检索中只检索该全部数据,且是对该的常规查询,不会使用“索引全扫描”。...(这是因为对于oracle索引,对于中存在的null不记录在b-tree索引中) 对于多个建立的索引(组合索引),该索引列有非空约束,在具体检索中只检索组合索引中涉及的全部或者部分列的全部数据...对于多个建立的索引(组合索引),该索引无非空约束,在具体检索中只检索组合索引中涉及的全部或者部分列的全部数据,且是对该的常规查询,不会使用“索引全扫描”。

91330

SQL命令 UPDATE(一)

SQL命令 UPDATE(一) 为指定表中的指定设置新。...多个数据指定为逗号分隔的列表,其中每个数据依次对应于一个。 :array() - 嵌入式SQL—指定为主机变量的数组。 数组的最低下标级别必须是未指定的。...UPDATE命令为包含这些的一个或多个现有基表提供一个或多个新。 将数据赋给是使用赋值语句完成的。 默认情况下,赋值语句更新表中的所有。...要列出为指定表定义的所有字段名。 如果字段存在,没有字段满足UPDATE命令的WHERE子句,则不影响任何,并发出SQLCODE 100(数据末尾)。...例如: (StatusDate,Status) VALUES ('05/12/06','Purged') 将标量表达式赋给列表,每个指定的必须有一个标量表达式。

2.9K20

DBA-MySql面试问题及答案-上

InnoDB 存储引擎和数据 建议使用 VARCHAR类型 对于InnoDB数据表,内部的存储格式没有区分固定长度和可变长度(所有数据 都使用指向数据的头指针) ,因此在本质上,使用固定长度的...使用不等于查询 NULL 参与了数学运算或者函数 在字符串like左边是通配符.比如 %xxx mysql分析全表扫描比使用索引快的时候不使用索引....如果是Innodb引擎表,type在这个情况通常都是all或者index 2、const 最多只有一记录匹配。联合主键或唯一索引的所有字段跟常量值比较,join类型为const。...主键或唯一非NULL索引的所有字段都被用作join联接时会使用此类型。 eq_ref可用于使用’='操作符作比较的索引。比较的可以是常量,也可以是使用在此表之前读取的表的的表达式。...Select tables optimized away:这个意味着通过使用索引,优化器可能仅从聚合函数结果中返回一

29620

这是我见过最有用的Mysql面试题,面试了无数公司总结的(内附答案)

定义主键,可以自动应用唯一索引。它确保索引键中的唯一的。 2.聚集索引:聚集索引对表的物理顺序进行重新排序,并根据键值进行搜索。每个表只有一个聚集索引。...SQL SELECT DISTINCT查询仅用于返回唯一。它消除了所有重复的。 31.Rename和Alias有什么区别?...内部联接:正在比较的两个(或多个)表之间至少有一些匹配数据,内部联接将返回。 外部联接:外部联接从两个表返回,这些行包括与一个或两个表不匹配的记录。 36.什么是SQL约束?...38.什么是唯一约束? 使用唯一约束来确保字段/中没有重复。 39.什么是主键? 一个PRIMARY KEY 约束唯一标识数据库表中的记录。 参与主键约束的所有均不得包含NULL。...联合:省略重复的记录,返回两个或多个select语句的不同结果集。 全部合并: 返回不同选择语句结果集中的所有,包括重复项。

27.1K20

MySQL性能优化(七):MySQL执行计划,真的很重要,来一起学习吧

2)index 全索引扫描,和全表扫描ALL类似,扫描表按索引次序进行,而不是按扫描,即:只遍历索引树。 index与ALL虽然都是读全表,index是从索引中读取,而ALL是从硬盘读取。...4)ref 非唯一性索引扫描,返回匹配某个单独所有。本质是也是一种索引访问,它返回所有匹配某个单独,然而它可能会找到多个符合条件的,所以它属于查找和扫描的混合体。...此类型只有当使用非唯一索引或者唯一索引的非唯一性前缀,才会发生。...5)eq_ref 唯一索引扫描。常见于主键或唯一索引扫描。 6)const 通过索引一次就能找到,const用于比较primary key 或者unique索引。因为只需匹配一数据,所有很快。...2)Using where 许多where条件里是涉及索引中的它读取索引,就能被存储引擎检验,因此不是所有带·where子句的查询都会显示“Using where”。

5.4K71

SQL命令 SELECT(一)

它可能作为选择项列出,也可能不作为选择项列出。 可选—ALL关键字指定返回满足SELECT条件的所有。 这是SQL的默认。 ALL关键字不执行任何操作; 它是为了SQL兼容性而提供的。...INTO host-variable-list - 可选-(嵌入式SQL):一个或多个主机变量,将选择放入其中。 多个主机变量被指定为逗号分隔的列表或单个主机变量数组。...SELECT查询可以将返回这些非数据库与从表或视图检索结合起来。 SELECT仅用于返回此类非数据库,FROM子句是可选的。 从SELECT查询返回的称为结果集。...但是,对于声明游标并从多行获取数据的嵌入式SQL SELECT,游标被推进到数据末尾(SQLCODE=100),操作就完成了; 此时,%ROWCOUNT被设置为选中的总数。...使用SELECT *,请注意级权限覆盖GRANT语句中命名的所有表列; 表级权限涵盖所有表列,包括分配权限后添加的。 没有必要的特权将导致SQLCODE -99错误(特权违反)。

5.3K10

SQL优化篇:如何成为一位写优质SQL语句的绝顶高手!

使用*,查询每条数据会返回所有字段,然后这些查询出的数据会先被放到结果集中,最终查询完成后会统一返回给客户端,线上Java程序和MySQL都是分机器部署的,所以返回数据需要经过网络传输,而由于返回的是所有字段数据...还有一种情况是基于主键/唯一索引字段查询数据,由于这些字段本身具备唯一性,因此MySQL在执行时,匹配到第一个就会自动停止扫描,因此上述这个方案只适用于普通索引字段、或表中的普通字段。...如果表中有相关的索引,MySQL可以快速确定在数据文件中间找到的位置,而不需要查看所有的数据。这比按顺序读取每一要快得多。 大多数MySQL索引(主键、唯一、索引和全文)都存储在b-tree中。...3.7.2字符和字符串类型 比较不同,尽可能用相同的字符集和排序来声明这些,以避免运行查询的字符串转换。 对于小于8KB的,使用二进制varchar而不是blob。...MySQL从中检索任何,它读取一个包含该行所有(可能还有其他相邻)的数据块。保持每一的大小并只包含最常用的,使每个数据块可以容纳更多的

89040

SQL命令 CREATE VIEW(一)

要从正在创建的视图的SELECT子句中引用的对象中进行选择,需要具有适当的权限: 使用动态SQL或xDBC创建视图,必须对从视图引用的基础表(或视图)中选择所有具有SELECT权限。...默认是1(启用)。 SQL Security被启用时,用户只能对已被授予权限的表或视图执行操作。 这是该选项的推荐设置。...类名包含字母数字字符(字母和数字),并且在前96个字符内必须是唯一的。...如果省略了逗号,下面的应用程序: 选择源表的列名用于在使用视图访问和显示数据。 如果任何选择源表列名具有别名,则别名是使用视图用于访问和显示数据的名称。...与表ID编号一样,这些视图ID编号是系统分配的、唯一的、非零的、非空的和不可修改的。此%VID通常是不可见的。与表ID不同,它在使用星号语法不会显示;只有在SELECT中显式指定时才会显示。

6.4K21

视图索引

创建索引视图 视图也称为虚拟表,这是因为由视图返回的结果集其一般格式与由组成的表相似,并且,在 SQL 语句中引用视图的方式也与引用表的方式相同。...视图的聚集索引必须唯一,从而提高了 SQL Server 在索引中查找受任何数据更改影响的的效率。 与基表上的索引相比,对索引视图的维护可能更复杂。...视图中的 SELECT 语句不能包含下列 Transact-SQL 语法元素: 选择列表不能使用 * 或 table_name.* 语法指定。...通过一个既可以取值为 float 也可以使用 float 表达式求值的表达式而生成的不能作为索引视图或表的索引的键。...与基表上的聚集索引一样,聚集索引的 B 树结构包含键数据行包含视图结果集中的所有。 若想为现有系统中的视图添加索引,必须计划绑定任何想要放入索引的视图。

1.1K30

数据库查询优化

数据库服务器在解析,如果碰到 *,则会先分析表的结构,然后把表的所有字段名再罗列出来。这就增加了分析的时间。...,必须选择记录条数最少的表作为基础表,SQLSERVER处理多个表,会运用排序及合并的方式连接它们。...例如,通过网络发送一个存储过程调用,而不是发送500的TSQL将更快,资源使用更少。每次执行SQL,都会执行解析SQL语句、估算索引的利用率、绑定变量、读数据块等等工作。...按照维护与管理的角度来分: * 唯一索引:惟一索引可以确保索引不包含重复的,可以用多个,但是索引可以确保索引中每个组合都是唯一的。...* 主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个唯一的。当在查询中使用主键索引,它还允许快速访问数据。

4.3K20

《Oracle性能优化求生指南》-第四章:数据库逻辑设计和物理设计-学习小结-1

3、第三范式: 实体(表)的所有数据完全依赖于主键。 不能有重复的属性()或属性组。 不存在依赖部分主键的实体数据。 不存在依赖于其他非主键的实体数据。...虽然多表联结性增强了,针对聚簇中某个表的全表扫描的性能却降低了。 嵌套表(Nested Table):能够针对主表中的某一优化对明细行的检索。...采用NULL可以降低的平均长度,从而一定程度上提高全表扫描的性能。 如果该的数值大部分是NULL,并且查询需检索非NULL的,则该列上的索引会比较紧凑并很高效。...对于数字类型,选择合适的默认会有难度,例如,统计包含AGE字段,基于索引扫描或查询AGE,可能需要找出年龄不确定(UNKNOWN)的记录。...NULL可以存储在位图BITMAP索引中,上述中或许不会因为这个理由选择位图索引,如果该AGE列上存在位图索引,可以高效地检索NULL

1.7K40
领券