
数据库
乡村非主流2020
这个作者很懒,什么都没留下…
展开
-
索引失效和sql优化 2020面试必看
索引失效1.隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误.由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.错误的例子:select * from test where tu_mdn=13333333333;正确的例子:select * from test where tu_mdn='13333333333';2. 对索引列进行运算导致索引失效,我所指的对索...原创 2020-06-29 12:41:32 · 217 阅读 · 0 评论 -
聚簇索引和非聚簇索引
聚簇索引聚簇索引(Clustered Index)并不是一种新的数据结构,只是B树索引的一种存储方式。聚簇索引的特点是完整的数据行就放在B树的叶子结点中,Clustered(聚簇,集群)就表示数据行与对应的键紧凑的存储在一起。下图是《高性能MySQL》聚簇索引的截图,其中,叶子结点包含了数据行的完整数据,非叶子节点只包含索引列数据。数据行的逻辑顺序与聚簇索引的顺序一致。B+树中叶子结点以链表的形式串联的,叶子节点中数据行的逻辑顺序只有一种,所以一张表只能有一个聚簇索引。相反非聚簇索.原创 2020-06-24 18:48:19 · 519 阅读 · 0 评论 -
索引的结构,作用,类型 2020面试必看
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。上图展示了一种可能的索引方式。左边是数据表,一共有两列七条记录,最左边的是...原创 2020-06-24 18:48:06 · 270 阅读 · 0 评论 -
索引为什么能提高查询速度 2020面试必看
索引的作用?为什么能够提高查询速度?(索引的原理)为什么能够提高查询速度?索引就是通过事先排好序,从而在查找时可以应用二分查找等高效率的算法。一般的顺序查找,复杂度为O(n),而二分查找复杂度为O(log2n)。当n很大时,二者的效率相差及其悬殊。举个例子:表中有一百万条数据,需要在其中寻找一条特定id的数据。如果顺序查找,平均需要查找50万条数据。而用二分法,至多不超过20次就能找到。二者的效率差了2.5万倍!在一个或者一些字段需要频繁用作查询条件,并且表数据较多的时候,创建索引会明显提.原创 2020-06-24 18:47:55 · 312 阅读 · 0 评论 -
四种mysql存储引擎 2020面试必看
前言数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySql的核心就是存储引擎。存储引擎查看MySQL给开发者提供了查询存储引擎的功能,我这里使用的是MySQL5.1,可以使用:SHOW ENGINES命令来查看MySQL使用的引擎,命令的输出为(我用的Navicat Pr原创 2020-06-24 18:47:45 · 275 阅读 · 0 评论 -
Mysql执行计划 2020面试必看
Explain语法执行计划包含的信息id包含一组数字,表示查询中执行select子句或操作表的顺序id相同,执行顺序由上至下如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行select_type表示查询中每个select子句的类型(简单 OR复杂)a.SIMPLE:查询中不包含子查询或者UNIONb.查询...原创 2020-06-24 18:47:34 · 487 阅读 · 0 评论 -
SQL的语法顺序与执行顺序
很多程序员都很抵触SQL。其实SQL是一整为数不多的声明性语言,只是它的运行方式完全不同于我们所熟知的命令行语言、面向对象的程序语言、甚至是函数语言。今天大家共同学习下SQL的语法顺序与执行顺序。(入门级的。大神们可以直接点退出了哈。)SQL 是一种声明式语言首先要把这个概念记在脑中:“声明”。SQL 语言是为计算机声明了一个你想从原始数据中获得什么样的结果的一个范例,而不是告诉计算机如何能够得到结果。SQL 语言声明的是结果集的属性,计算机会根据 SQL 所声明的内容来从数据库中挑.原创 2020-06-24 18:47:23 · 526 阅读 · 0 评论 -
Oracle左连接、右连接、全外连接、内连接以及(+)号用法 2020面试必看
Oracle左连接、右连接、全外连接以及(+)号用法Oracle 外连接(OUTER JOIN)包括以下:·左外连接(左边的表不加限制)·右外连接(右边的表不加限制)·全外连接(左右两表都不加限制)对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常省略OUTER关键字, 写成:LEFT/RIGHT/FULL JOIN。在左连接和右连接时都会以一张A表为基础表,该表的内容会全部显示,然后加上A表和B表匹配的内容。如果A表的数据在B表中没有记录。那么在相关联...原创 2020-06-24 18:47:13 · 349 阅读 · 0 评论 -
MVCC和间隙锁在可重复读隔离级别下防止幻读 2020面试必看
什么是MVCC?英文全称为Multi-Version Concurrency Control,翻译为中文即 多版本并发控制。在小编看来,他无非就是乐观锁的一种实现方式。在Java编程中,如果把乐观锁看成一个接口,MVCC便是这个接口的一个实现类而已。数据库默认隔离级别:RR(Repeatable Read,可重复读),MVCC主要适用于Mysql的RC,RR隔离级别1.MVCC其实广泛应用于数据库技术,像Oracle,PostgreSQL等也引入了该技术,即适用范围广2....原创 2020-06-10 09:44:56 · 2879 阅读 · 5 评论 -
mysql数据库隔离级别 2020面试必看
【隔离级别】MySQL默认的隔离级别是可重复读在sql中定义了四种隔离级别:READ UNCOMMITED(未提交读)事务之间的数据时相互可见的READ COMMITED(提交读)大多数数据库的默认隔离级别,保证了不可能脏读,但是不能保证可重复读,在这个级别里,数据的加锁实现是读取都是不加锁的,但是数据的写入,修改和删除是需要加锁的REPEATABLE READ(可重复读)解决了不可重复读的问题,保证了在同一个事务中,多次读取相同的记录的值得结果是一致的.但是无法解决幻读。这个阶段的原创 2020-06-10 09:45:13 · 142 阅读 · 0 评论 -
数据库中的锁 2020面试必看
【数据库层面的悲观锁,乐观锁】【乐观锁】不是数据库自带的,需要我们自己去实现。乐观锁是指操作数据库时(更新操作),认为这次操作不会导致冲突,在操作数据时,不进行任何其他的特殊处理,在进行更新后,再去判断是否有冲突。通常实现是这样的:在表中数据进行操作时,先给数据表加一个版本字段,每操作一次,将那条记录的版本号加一。也就是先查询出那条记录,获取version字段,如果要对那条记录进行操作(更新),则先判断此刻version的值是否与刚查出的version的值相等,如果相等,说明这段时间没有其他原创 2020-06-24 18:47:01 · 144 阅读 · 0 评论 -
Mybatis常见面试题 2020面试必看
一、#{}和${}的区别是什么?1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order原创 2020-06-24 18:46:50 · 255 阅读 · 0 评论 -
数据库三大范式详解 2020面试必看
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。范式说明1.1第一范式(1NF)无重复的列所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的...原创 2020-06-24 18:46:38 · 196 阅读 · 0 评论 -
【分库分表(垂直/水平)】
关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。原创 2020-06-23 18:55:24 · 433 阅读 · 0 评论 -
Nosql数据库的分类及应用场景 2020面试必看
nosql是not only sql的意思。是近今年新发展起来的存储系统。当前使用最多的是key-value模型,是一种非关系型数据库,主要是解决是海量数据下的数据库性能和扩展能力。它最大的特点在于要求的数据量大,对事务的要求低。NoSQL 它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL 数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。NoSQL与关系型数据库设计理念比较关系型数据库中的表都是存储一些格式化...原创 2020-06-23 18:55:10 · 576 阅读 · 0 评论 -
数据库常见面试题 2020面试必看
char、varchar和varchar2的区别(转)区别:1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。2.CHAR的效率比VARCHAR2的效率稍高。3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串...原创 2020-06-23 18:55:00 · 438 阅读 · 0 评论