首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

18.所有不同类型索引是什么? 索引有三种类型 1.唯一索引:唯一索引通过确保中没有两行数具有相同键值来帮助维护数据完整性。定义主键时,可以自动应用唯一索引。...在Oracle中使用自动递增关键字 在SQL Server中使用IDENTITY关键字。 29.什么是临时? 临时是用于临时存储数据临时存储结构。 30.如何避免查询中重复记录?...用字段NULL值是没有值字段。甲NULL值是从零值或包含空格字段不同具有NULL值字段是在记录创建过程中留为空白字段。...Union和Union All都将两个结果连接在一起,但是这两个查询处理重复方式不同联合:省略重复记录,仅返回两个或多个select语句不同结果集。...如果未与交叉联接一起使用WHERE子句,则交叉联接将产生一个结果集 该结果集是第一个行数乘以第二个行数。 这种结果称为笛卡尔积。

27K20

数据库模型设计——主键设计

在数据库设计时,主要就是对实体和关系设计,实体表现出来就是,关系表现出来就是外键。而对于一个,由两部分组成:主键和属性。主键简单定义就是中为每一行数唯一标识。...GUID类型在SQL Server中是16个字节,不算短,比4个字节Int32长多了。...比如员工把员工号作为主键,那么员工还没有入职,没有员工号时候,HR需要先维护一些该预入职员工信息是不可能联合主键 联合主键就是以多个字段来唯一标识每一行数据。...联合主键主要使用在多对多关系时,中间就需要使用联合主键。在简单多对多关系中,我们不需要为中间关联建立实体,所以中间可能就只需要两列,分别是两个实体表主键。...以SQL Server为例,默认情况下,建立主键列,就会建立聚集索引,但是实际上,我们可以在建立主键时不使用聚集索引。

95030

为什么SQL语句Where 1=1 and在SQL Server中不影响性能

比如说访问一行数据,如果是编程语言实现,就需要指定连接数据方式,打开数据,按某个方式取出数据,最后还要关闭连接,而在SQL Server中,T-SQL仅仅是定义如何去获取所需数据,而无需考虑实现细节...在SQL Server中,T-SQL需要编译为执行计划才能去执行,在编译过程中,Query Optimizer需要考虑很多元数据,比如说索引、数据分布、估计行数、一些参数配置、硬件环境等,在这其中...,最重要就是估计行数SQL Server需要估计行数来估计成本。...比如语句select * from table where a=1 and b=2 这个语句,SQL Server估计行数会是:     a列选择率*b列选择率*中采样行数     因此,当...这里我们举例,假如表中有100万行数据,where a=1数据有1万条,where b=1数据有1万条,则A和B选择性都是1/100=0.01,在Where中A And B联合估计行数则变为0.01

1.9K30

面试:mysql最全索引与优化详解

mysql 是我们最常用数据存储程序,它是关系数据库代表,可以直接服务于我们常规业务,是我们不能离开数据存储器,对于关系操作复杂业务,具有很强优势。...server 端包括,sql优化器,缓存主件: 一条sql查询过程: 首先client 向server端发送一条查询sql. server端 先去缓存中进行查询,如果命中缓存,直接返回,否则进入下一个阶段...2. mysql不同存储引擎不同索引区别 我们在一个数据库里进行创建时候可以指定创建存储引擎 ENGINE=InnoDB; CREATE TABLE QRTZ_CALENDARS ( SCHED_NAME...InnoDb索引 和 MyISAM索引,可以将不同根据不同需求创建不同索引。...值进行排序, 一个可以有多个辅助索引,辅助索引中索引逻辑顺序与磁盘上行物理存储顺序不同; 可以将创建联合索引,但是联合索引遵循最左匹配原则: ?

68150

【索引潜规则】-覆盖索引、ICP、MRR详解

上篇文章我们说了创建索引方法,有聚簇索引、辅助索引、前缀索引、联合索引等,也说了如何利用索引排序功能,接着本篇文章主要来说一说索引几种优化策略,首先我们先说下回概念。...一 回 假设有这么一条SQL,select * from t where age=23,Innodb会通过二级索引找到主键值20,然后拿着20再回到聚簇索引树搜索找到要找行数据(data)...下图就展示了该条SQL过程。 ? 通过上图我们可以看到回过程需要扫描两棵树,这样增加了磁盘扫描,如何避免回呢?这就引出了我们下面要将内容:覆盖索引。...%放在前面时无法利用索引查找,这条SQL只能用到联合索引age列。...定期清理冗余索引、未使用过得索引以及查看全扫描SQL等,具体监控手段请参见之前文章> 常见索引失效场景: 通过索引扫描行数超过全20%-

1.3K10

MySQL索引选择底层原理探究-从一个慢查询说起 | 技术创作特训营第一期

如果我们强制让优化器走uk索引, 结果会如何呢?...10改为limit 20, 会如何呢?...到了14758), mysql引擎此时认为还不如先走联合索引后再排序来更高效, 因此就自动切到了高效联合索引....而优化器选择索引目的,是找到一个最优执行方案,并用最小代价去执行sql。扫描行数是影响执行代价因素之一, 扫描行数越少,说明访问磁盘数据次数越少,CPU消耗越少....不过扫描行数并不是唯一断标准,还会结合是否使用了临时、是否排序等因素进行综合判断.图片mysql优化器选择有如下考虑因素:扫描行数、是否使用临时、是否排序等等.若排序索引预估行数row小并且没有filesort

4.6K65958

使用polars进行数据分析

polars VS pandas polars 与 pandas 在许多方面具有截然不同设计与实现。...具体可以参考 官方文档 实战 下面我们用一个实际例子来演示如何使用 polars 进行数据分析,并与 pandas 进行对比。...进行数据分析 我们可能想要知道不同商品类目的访问数据,包括 UV 和 PV。可以分别使用 polars 和 pandas 进行聚合查询。...使用 SQL 进行跨联合查询 polars 提供 join 方法进行联合查询,不过 join API 比较繁琐,也不是很直观,我们可以使用 SQL 进行跨联合查询。...然后将 cat_info 注册为一个临时。 修改之前 SQL 查询,使用cat_info进行联合查询,在结果中包括每个类目的名字。 可以查看一下执行计划。 执行查询,用时 12 秒。

1.3K30

分库分索引问题

摘要 最近遇到一个慢sql,在排查过程中发现和分库分索引设置有关系,总结了下问题。...主要是IN里面的值数量不同,会影响扫描行数不同,所以常常会出现索引选择不一致。...只负责找到对应。到以后,就是和单一样查询逻辑。 因为分键不是索引,但是查询语句是必须要带着分键,那意味着我们分库分以后索引大部分要建成联合索引了,分键+索引键。...单索引mysql server要面临着索引选择问题。 当然并不是绝对,比如上面我举那个案例。按照这个思路查看了下其他索引。...果然大部分索引都是非联合索引,还是直接从单copy过来索引。这些索引基本上都是无用,因为都是userid索引.

2.5K30

mysql索引及执行计划

节点数据页号码 2查询如果不满足单列条件,查询一整行数据 会拿主键值在次 (回查询) 做聚簇索引查询 联合索引 select * from ti where name=‘s’ and gender...hints 单独指定/*+ / select @@optimizer mrr 拿name做查询时候 匹配对应name值对回之前做个排序走聚簇索引拿整行数据 5.6之后 icp 有联合索引 abc...=b.id 如何选择驱动 人工干预left join 优化器默认自己选结果集小 a先拿a第每一行判断是不是和b行等值 b有索引 inlj 基于索引扫描 普通索引 a先拿a第每一行扫描...那么order by走条件就会在server层进行排序 最好方法是创建一个联合索引 让where和order by 查询和排序条件都覆盖到 using tmp 会使用到临时 会导致内存压力比较大...统计信息不准确 联合索引应用细节 如何查询联合索引应用那部分索引 explain format=json select 查询列 from 名 where a=1 and b=1 and c=

1.3K31

Go 语言使用原生 SQL 兼容多种数据库

直接进行跨库数据交互 dbo 支持 PostgreSQL postgres 使用 dblink 扩展模块或外部数据包装器进行数据交互 public 支持 MySQL mysql 使用联合查询、存储过程等方法进行数据交互...例如,在 PostgreSQL 中,标识符 "tb_example" 和 "TB_EXAMPLE" 是两个不同,而在 SQL Server 中这两个标识符则指向同一个: -- DROP TABLE...下面是在各个数据库中如何明确指定标识符(例如表名、列名等)语法示例: 序号 数据库类型 明确指定标识符语法 1. SQL Server 使用双引号 "" 或方括号 [] 包裹标识符 2....对于在不同数据库系统中数据类型差异较大情况,开发过程中使用 ORM(对象关系映射框架)来操作数据库比使用原生 SQL 具有更好兼容性。 (三)SQL 语法 1....分页查询 对于分页查询,SQL Server 和 Oracle 数据库跟其他数据库查询方式差异较大,且不同版本之间可能也有不同查询方式, 不同数据库对应分页查询语法如下所示: SQL Server

10410

PHP数据库编程之MySQL优化策略概述

全文索引:MyISAM支持 FULLTEXT类型全文索引(不适用中文,所以要用sphinx全文索引引擎)。InnoDB不支持。 具体行数:MyISAM保存有行数,查询count(*)很快。...InnoDB没有保存行数,需要重新计算。 外键:MyISAM不支持。...方式有垂直切分、水平切分和联合切分。 垂直切分:在数据非常多时候,把数据库中关系紧密(如同一模块,经常连接查询)切分出来分别放到不同主从server上。...水平切分:在不多,而表里数据量非常大时候,为了加快查询,可以用哈希等算法,将一个数据分为几个,分别放到不同服务器上,加快查询。水平切分和数据分区区别在于其存储介质上不同。...联合切分:更多情况是数据数据量都非常大,则要进行联合切分,即同时进行垂直和水平分,将数据库切分为一个分布式矩阵来存储。

1.3K40

PHP数据库编程之MySQL优化策略概述

全文索引:MyISAM支持 FULLTEXT类型全文索引(不适用中文,所以要用sphinx全文索引引擎)。InnoDB不支持。 具体行数:MyISAM保存有行数,查询count(*)很快。...InnoDB没有保存行数,需要重新计算。 外键:MyISAM不支持。...方式有垂直切分、水平切分和联合切分。 垂直切分:在数据非常多时候,把数据库中关系紧密(如同一模块,经常连接查询)切分出来分别放到不同主从server上。...水平切分:在不多,而表里数据量非常大时候,为了加快查询,可以用哈希等算法,将一个数据分为几个,分别放到不同服务器上,加快查询。水平切分和数据分区区别在于其存储介质上不同。...联合切分:更多情况是数据数据量都非常大,则要进行联合切分,即同时进行垂直和水平分,将数据库切分为一个分布式矩阵来存储。

1K50

Tapdata Connector 实用指南:数据入仓场景之数据实时同步到 BigQuery

本期实用指南以 SQL Server → BigQuery 为例,演示数据入仓场景下,如何将数据实时同步到 BigQuery。...② 创建数据源 SQL Server 连接 在 Tapdata Cloud 连接管理菜单栏,点击【创建连接】按钮, 在弹出窗口中选择 SQL Server 数据库,并点击确定。...基于 BigQuery 特性,Tapdata 做出了哪些针对性调整 在开发过程中,Tapdata 发现 BigQuery 存在如下三点不同于传统数据库特征: 如使用 JDBC 进行数写入与更新,则性能较差...在数据增量阶段,先将增量事件写入一张临时,并按照一定时间间隔,将临时与全量数据通过一个 SQL 进行批量 Merge,完成更新与删除同步。...不同于传统 ETL,每一条新产生并进入到平台数据,会在秒级范围被响应,计算,处理并写入到目标中。同时提供了基于时间窗统计分析能力,适用于实时分析场景。

8.5K10

PHP中数据库一、MySQL优化策略综述

具体行数:MyISAM保存有行数,查询count(*)很快。InnoDB没有保存行数,需要重新计算。   外键:MyISAM不支持。...3、进行多条件查询时,对多条件分别建立索引时,执行sql查询时,MySQL只会选择一个最贴近索引来使用,所以如果需要多条件查询,要建立联合索引,即使会造成数据冗余。...方式有垂直切分、水平切分和联合切分。 垂直切分:在数据非常多时候,把数据库中关系紧密(如同一模块,经常连接查询)切分出来分别放到不同主从server上。...水平切分:在不多,而表里数据量非常大时候,为了加快查询,可以用哈希等算法,将一个数据分为几个,分别放到不同服务器上,加快查询。水平切分和数据分区区别在于其存储介质上不同。...联合切分:更多情况是数据数据量都非常大,则要进行联合切分,即同时进行垂直和水平分,将数据库切分为一个分布式矩阵来存储。

2K80

(4) MySQL中EXPLAIN执行计划分析

SQL如何使用索引 联接查询执行顺序 查询扫描数据函数 二. 执行计划中内容 SQL执行计划输出可能为多行,每一行代表对一个数据库对象操作 1....ID列 ID列中的如果数据为一组数字,表示执行SELECT语句顺序;如果为NULL,则说明这一行数据是由另外两个SQL语句进行 UNION操作后产生结果集 ID值相同时,说明SQL执行顺序是按照显示从上至下执行...ID值不同时,ID值越大代表优先级越高,则越先被执行 演示 可以看到上面的执行计划返回了3行结果,id列值可以看作是SQL中所具有的SELECT操作序号 由于上述SQL中只有一个SELECT,...KEY_LEN列 显示MySQL索引所使用字节数,在联合索引中如果有3列,假如3列字段总长度为100个字节,Key_len显示可能会小于100字节,比如30字节,这就说明在查询过程中没有使用到联合索引所有列...Ref列 表示当前在利用Key列记录中索引进行查询时所用到列或常量 11. rows列 表示MySQL通过索引统计信息,估算出来所需读取行数(关联查询时,显示是每次嵌套查询时所需要行数

89320

Mysql面试题

在 MyISAM Static 上所有字段有固定宽度。MyISAM Dynamic 具有像TEXT,BLOB等字段,以适应不同长度数据类型。...实践中如何优化MySQL SQL语句及索引优化 数据库结构优化 系统配置优化 硬件优化 详细可以查看 阿里P8架构师谈:MySQL慢查询优化、索引优化、以及等优化总结 23....SQL注入漏洞产生原因?如何防止? SQL注入产生原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。...快速访问数据特定信息,提高检索速度 创建唯一性索引,保证数据库中每一行数唯一性。...35.如何通俗地理解三个范式?

1.1K51

MysqlSQL优化指北

所以我们建议:让主键具有AUTO_INCREMENT,让存储引擎自己为生成主键。...对于count(主键id)来说,InnoDB引擎会遍历整张,把每一行id值都取出来,返回给server层。server层拿到id后,判断是不可能为空,就按行累加。...对于count(1)来说,InnoDB引擎遍历整张,但不取值。server层对于返回每一行,放一个数字“1”进去,判断是不可能为空,按行累加。...从t1中读入一行数据 R; 2. 从数据行R中,取出a字段到t2里去查找; 3. 取出t2中满足条件行,跟R组成一行,作为结果集一部分; 4....这个SQL由于使用了索引,所以在将t1数据取出来后根据t1a字段实际上是对t2一个索引等值查找,所以t1和t2比较行数是相同,这样使用被驱动索引关联称之为“Index Nested-Loop

94520

MySql知识体系总结(2021版)请收藏!!

存储引擎通过API与上层进行通信,这些API屏蔽了不同存储引擎之间差异,使得这些差异对上层查询过程透明。存储引擎不会去解析SQL。...4、 事务支持 MyISAM:强调是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。 InnoDB:提供事务支持事务,外部键等高级数据库功能。...9、具体行数 MyISAM:保存有行数,如果select count() from table;会直接取出出该值。...◆ 如何触发联合索引 1、对user建立联合索引username、password ? 2、触发联合索引 (1)使用联合索引全部索引键可触发联合索引 ?...指定了联接条件时,满足查询条件记录行数为[驱动] 未指定联接条件时,行数为[驱动] 对驱动直接进行排序就会触发索引,对非驱动进行排序不会触发索引。

1.2K10
领券