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

根据面试经历,总结mysql面试题(实时更新)

根据解析器的解析树,进一步检查表是否存在、列是否存在、名字和别名是否有歧义等。...如何已经使用了UUID,之后只能根据创建时间进行范围查询 mysql的索引如何做优化 1 定位慢查询的地方,有一个慢查询日志,我们可以设置当多于多少秒的时候,就将数据记录到慢查询日志表里面,以后我们就可以打开这个慢查询日志表...数据库的乐观锁需要自己实现,在表里面添加一个 version 字段, 每次修改成功加 1,这样每次修改的时候先对比一下, 自己拥有的 version 和数据库现在的 version 是否一致, 如果不一致就不修改...如何做 mysql 的性能优化? 为搜索字段创建索引。 避免使用 select *,列出需要查询的字段。 垂直分割分表。 选择正确的存储引擎。...假如构成索引的字段总长度比较短, 那么在给定大小的存储块内可以存储更多的索引, 相应的可以有效的提升MySQL访问索引的I/O效率。

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

追踪记录每笔业务操作数据改变的利器——SQLCDC

说到这里,很多人都会想到采用触发器的方式实现对数据改变的捕捉。...但是这种实现方案具有一个最大的局限:由于触发器是在数据操作所在事务范围内执行的,所有会带来性能的问题,严重的话还会因为触发器的执行导致事务超市。...如果在默认的情况下,我执行如下的SQL语句查看数据库TestDb的CDC是否开启,你将会看到该字段为0。 ?...五、记录更新数据的数据改变 接下来我们CDC对更新操作的追踪记录,为此我们通过下面的T-SQL改变了用户Foo的Birthday。...在这里值得一提的是__$update_mask字段,它表示的记录更新操作改变的字段。这是一个以16进制表示的数字,在进行对修改字段进行判断的时候需要将其转换成2进制。

1.6K70

介绍一种非常好用汇总数据的方式GROUPING SETS

介绍   对于任何人而言,用T-SQL语句来写聚会查询都是工作中重要的一环。我们大家也都很熟悉GROUP BY子句实现聚合表达式,但是如果打算在一个结果集中包含多种不同的汇总结果,可能会比较麻烦。...或许当我们在打算分析较大规模的数据集时,不知道从何下手,此时处理这种情况最好的方式就是汇总数据,快速的得到一个数据预览。 在T-SQL中,使用GROUP BY子句在一个聚合查询中汇总需要的数据。...本文中,我会展示如何使用GROUPING SETS实现这一目的。...如果非要那个为空字段,需要使用 GROUPING 或者 GROUPING_ID 函数判断是否NULL来自GROUPING SETS 操作符。...总结 本篇文章中,主要介绍如何使用另一种聚合查询方式实现多种分组聚合结果的合并。熟悉后你会发现这种方式对于总结汇总数据非常有帮助,大大提高了我们代码的效率。 原文地址

3.4K110

.Net+SQL Server企业应用性能优化笔记3——SQL查询语句

如果性能问题是出在程序上,那么就要根据业务对程序中的函数进行调整,可能是函数中的写法有问题,算法有问题,这种调整如果不能解决问题的话,那么就要从架构上进行考虑,我们是不是应该使用这种技术,有没有替代的方案实现同样的业务功能...原来的图表生成是完全基于GDI+在Web服务器上根据数据进行复杂的绘图,然后将绘出的图片保存在磁盘上,然后在HTML中添加Img标签引用图片的地址。...存储过程本身很复杂,里面的T-SQL语句就是五六百行,编译出的执行计划也是一堆,里面进行了大量的逻辑判断、大量函数的调用,这种情况下进行调优就比较痛苦了。...如果只是最c2字段建立非聚集索引,那么前面说到的查找在进行了“非聚集索引查找”后还会进行“键查找”来找到c3列的,所以要建立的正确的索引才行。 不符合SARG原则。...是否能够增加适当的冗余字段,对数据库进行反范式化,或者如果数据的实时性要求不高的话则可以建立中间汇总表,使用SQL作业维护这个中间汇总表,查询的时候只查询该中间汇总表即可。

65220

SQL对Xml字段的操作

随着SQL Server 对XML字段的支持,相应的,T-SQL语句也提供了大量对XML操作的功能来配合SQL Server中XML字段的使用。本文主要说明如何使用SQL语句对XML进行操作。...同样,我们也可以使用SQL语句创建使用XML字段的数据表,下面的语句创建一个名为“docs”的表,该表带有整型主键“pk”和非类型化的 XML 列“xCol”: CREATE TABLE docs (...pk INT PRIMARY KEY, xCol XML not null) XML类型除了在表中使用,还可以在存储过程、事务、函数等中出现。... David 21 ' 三、查询操作 在定义了一个XML类型的数据之后,我们最常用的就是查询操作,下面我们介绍如何使用...OK,经过上面的学习,相信你已经可以很好的在SQL中使用Xml类型了,下面是我们没有提到的,你可以去其它地方查阅:exist()方法,用来判断指定的节点是否存在,返回为true或false; nodes

2.1K20

T-SQL基础(五)之增删改

UPDATE操作不是幂等的,我们可以借助事务防止误操作: BEGIN TRAN UPDATE ......基于同时操作的概念,注意以下语句的运算结果: 交换两个字段 UPDATE dbo.T1 SET col1 = col2, col2 = col1; 如果字段col1=100,col2=200 UPDATE...DELETE T-SQL提供了两种删除数据的方式:DELETE与TRUNCATE,删除操作也是非幂等的,与UPDATE一样,我们可以借助事务防止误操作。...我们可以通过创建一个虚拟表,带有指向生产表的外键(甚至可以禁止外键以防影响性能),依此避免TRUNCATE误操作。 MERGE MERGE是标准的SQL语句,T-SQL对其进行了一定的扩展。...推荐阅读 T-SQL基础(一)之简单查询 SQL Server中锁与事务隔离级别 SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

1.2K20

走向面试之数据库基础:三、SQL进阶之变量、事务、存储过程与触发器

--相当于C#里的{ 语句1 …… END --相当于C#里的} ELSE BEGIN 语句1 …… END   (2)假设我们有一张选课成绩表SC,其中包括三个字段...3.3 使用事务完成同生共死   这里使用事务解决刚刚的那个转账的问题,注意这里使用到了系统变量@@ERROR,但是@@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL...语句是否有错,我们需要对错误进行累计,于是我们可以定义一个局部变量记录整个操作序列期间的错误数。...那么,现在我们有这样一个需求:在每次向成绩表中添加新数据的时候,首先判断插入的学生学号是否存在于Student表中,如果存在则显示“插入成功”,如果不存在(也就是操作人员输入有误)那么则此次新增操作作废...courseid = cId from inserted--获得新增行的数据 if exists(select * from Student where sId=@stuid)--判断分数学员是否存在

1.2K20

30分钟全面解析-SQL事务+隔离级别+阻塞+死锁

,SQL Server通常会自动回滚事务; 4.少数不太严重的错误不会引发事务的自动回滚,如主键冲突、锁超时等; 5.可以使用错误处理捕获第4点提到的错误,并采取某种操作,如把错误记录在日志中,再回滚事务...; 6.SELECT @@TRANCOUNT可用在代码的任何位置判断当前使用SELECT @@TRANCOUNT的地方是否位于一个打开的事务当中,如果不在任何打开的事务范围内,则该函数返回0;如果在某个打开的事务返回范围内...,则返回一个大于0的。...二、锁 1.事务中的锁 (1)SQL Server使用锁实现事务的隔离。 (2)事务获取锁这种控制资源,用于保护数据资源,防止其他事务对数据进行冲突的或不兼容的访问。...b.持有共享锁时间:从事务得到共享锁到读操作完成。   c.多个事务可以在同一阶段用共享锁作用于同一数据资源。   d.在读取数据时,可以对如何处理锁定进行控制。

1.9K50

浅谈 SQL Server 查询优化与事务处理

什么是索引呢,索引是 SQL Server 编排数据的内部方法,他为 SQL Server 提供了一种方法编排查询数据的路由,从而达到通过使用索引来提高数据库的检索速度、改善数据库性能。...exec sp_helptext view_student_result --查看视图的语句文本 exec sp_stored_procedures --返回当前数据库中的存储过程列表 根据系统存储过程的不同作用...语句 存储过程的返回 用SSMS创建存储过程 一个完整的存储过程包括以下三部分: 1、输入和输出参数 2、在存储过程中执行的 T-SQL 语句 3、存储过程的返回 使用 T-SQL 语句创建存储过程的语法为...开始事务(指定事务从此开始,后续的T-SQL语句是一个整体) declare @errorsum int --定义变量,用于累计事务执行过程中的错误 set @errorsum=0 --初始化为...查看锁: 使用sys.dm_tran_locks动态管理视图 使用Profiler捕捉锁信息 死锁 死锁的本质是一种僵持状态,是由多个主体对资源的争用而导致的。

1.9K50

T-SQL基础(五)之增删改

UPDATE操作不是幂等的,我们可以借助事务防止误操作: BEGIN TRAN UPDATE ......基于同时操作的概念,注意以下语句的运算结果: 交换两个字段 UPDATE dbo.T1 SET col1 = col2, col2 = col1; 如果字段col1=100,col2=200 UPDATE...该语句用于更新OD表中存在于查询结果集(FROM语句)中的数据。...DELETE T-SQL提供了两种删除数据的方式:DELETE与TRUNCATE,删除操作也是非幂等的,与UPDATE一样,我们可以借助事务防止误操作。...我们可以通过创建一个虚拟表,带有指向生产表的外键(甚至可以禁止外键以防影响性能),依此避免TRUNCATE误操作。 MERGE MERGE是标准的SQL语句,T-SQL对其进行了一定的扩展。

1.1K30

那些年我们写过的T-SQL(下篇)

需要注意的是标识无论操作是否成功都会自动增长,因此当需要真正连续的记录号时,需要自己的替代方案。...此外,T-SQL支持ALTER TABLE语句设置LOCK_ESCALATION控制锁升级行为,包括是否支持锁升级和发生升级时的粒度(如页升级为表或分区)。...READ COMMITED: 系统默认的隔离级别,支持读取已提交的数据,通过要求读取者获取共享锁防止未提交的读取,但由于其会在读取完成后释放锁,因而会存在在两次读取之间数据不一致的问题(也称之为不可重复读...在读取数据时使用修改锁代替共享锁,并将此锁保持至整个事务或命令结束。...本地临时表仅对创建它的会话可见,全局临时表对所有会话可见,表变量仅对当前会话的当前批有效,粒度更小,在T-SQL它也是实际的表(易误解为只存在内存)。

2K50

阿里数据仓库-数据模型建设方法总结(全)

另外, 如果数值型字段是离散,则作为维度属性存在的可能性较大;如果数 型宇段是连续,则作为度量存在的可能性较大,但并不绝对,需要 同时参考宇段的具体用途。...具体可以根据自身数据仓库的实际情况进行选择。 3.3 维度变化 3.3.1 缓慢变化维 在 Kimball 的理论中,有三种处理缓慢变化维的方式,可以根据业务需求进行选择: 重写维度。...如何选择: 当不同业务过程的度量比较相似、差异不大时,可以采用第 二种 多事务事实表的设计方式,使用同 一个字段表示度量数据 。...这种方式所存在的问题是度量字段较多(如淘宝交易事务事实表,针对不同业务过程如下单,则打一个是否当天下单的标签)。...针对卖家的历史至今的下单和支付金额,无论 当天卖家是否有下单支付事实,都会给该卖家记录一行。 半可加性 半可加性事实不能根据时间维度获得有意义的汇总结果; 虽然不能汇总,但可以计算一些平均值。

98220

阿里大数据之路:数据模型篇大总结

另外, 如果数值型字段是离散,则作为维度属性存在的可能性较大;如果数 型宇段是连续,则作为度量存在的可能性较大,但并不绝对,需要 同时参考宇段的具体用途。...存在交叉,则需要去重 不存在交叉,则需要考虑不同子集的自然键是否存在冲突 如果不冲突, 则可以考虑将各子集的自然键作为整合后的表的自然键 设置超自然键,将来源表各子集的自然键加工成一个字段作为超自然键(...具体可以根据自身数据仓库的实际情况进行选择。 3.3 维度变化 3.3.1 缓慢变化维 在 Kimball 的理论中,有三种处理缓慢变化维的方式,可以根据业务需求进行选择: 重写维度。...如何选择: 当不同业务过程的度量比较相似、差异不大时,可以采用第 二种 多事务事实表的设计方式,使用同 一个字段表示度量数据 。...这种方式所存在的问题是度量字段较多(如淘宝交易事务事实表,针对不同业务过程如下单,则打一个是否当天下单的标签) 4.2.4 两种事实表对比 业务过程 对于单事务事实表,一个业务过程建立一个事实表,只反映一个业务过程的事实

1.3K22

【大长文】7大领域,50道经典题目,助你彻底搞定MySQL面试!

对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据。...此外可以根据特例的查询或者表结构进行单独的调整。 22. 怎样知道语句运行很慢的原因? MySQL提供了explain命令查看语句的执行计划。...可以通过其中和索引有关的信息分析是否命中了索引,例如possilbe_key、key、key_len等字段,分别说明了此语句可能会使用的索引,实际使用的索引以及使用的索引长度。 23....一旦事务提交,那么就永远是这样子了,哪怕系统崩溃也不会影响结果。 32.事务如何通过日志实现的?...SELECT:InnoDB会根据以下条件检查每一行记录:第一,InnoDB 只查找版本早于当前事务版本的数据行,这样可以确保事务读取的行要么是在开始事务之前已经存在要么是事务自身插入或者修改过的;第二,

72210

史上最全的大厂Mysql面试题在这里

查询日志:记录所有对数据库请求的信息,不论这些请求是否得到了正确的执行。 慢查询日志:设置一个阈值,将运行时间超过该的所有SQL语句都记录到慢查询的日志文件中。...中继日志: 事务日志: (2)、事物的4种隔离级别 隔离级别 读未提交(RU) 读已提交(RC) 可重复读(RR) 串行 (3)、事务如何通过日志实现的,说得越深入越好。...主从一致性校验有多种工具 例如checksum、mysqldiff、pt-table-checksum等 14、你们数据库是否支持emoji表情,如果不支持,如何操作?...第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。...第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。

1.1K90

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

下面的栗子演示了如何将文件"C:\testdata\orders.txt"中的数据容量插入(bulk insert)到Orders表,同时还指定了文件类型为字符格式,字段终止符为逗号,行终止符为换行符(...③ 基于联接的DELETE:也不是标准SQL语句,可以根据另一个表中相关行的属性定义的过滤器删除表中的数据行。   ...对于INSERT操作不存在旧版本的,因此所有deleted列的都返回NULL。$action函数会告诉我们输出行是UPDATE还是由INSERT操作生成的。 ?...:   (1)Jackson,《30分钟全面解析-SQL事务+隔离级别+阻塞+死锁》   (2)BIWork,《SQL Server 中的事务事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因...8.2 流程控制   (1)IF...ELSE   这个大家应该都知道,但是需要注意的是:T-SQL使用的是三逻辑,当条件取值为FALSE或UNKNOWN时,都可以激活ELSE语句块。

8.9K20

T-SQL基础(一)之简单查询

逻辑 与T-SQL中的大多数谓词不同,EXISTS使用两逻辑(True/False),而不是三逻辑; 在EXISTS( SELECT * FROM T_A WHERE Id=12)中,EXISTS...谓语只关心匹配行是否存在,而不管SELECT中指定的属性,就像整个SELECT子句是多余的一样。...在使用NULL时应注意以下几点: 将NULL与其它进行比较,不管该是否为NULL,结果均为Unknown 应使用IS NULL或IS NOT NULL判断是否为NULL INSERT未给列指定则插入...的特殊性 若列名为tag的例中存在a,NULL,c,d几行数据,那么COUNT(*)返回4而COUNT(tag)则返回3 NULL参与的逻辑运算结果很可能是Unknown(三逻辑也是引发应用错误的重要原因...在查询结果中,每组最终由一个单行表示。这意味着,GROUP BY之后的所有子句中指定的表达式必须对每组返回一个标量(单个)。 HAVING用于对GROUP BY产生的组进行筛选。

4.1K20

_T-SQL程序练习01

创建一个表的时候,必须决定字段定义所要使用的数据类型。数据类型定义了可以存储在一个字段中的数据种类。DBA可以使用数据类型定义变量和存储过程的输入和输出参数。...然而,如果为此字段使用字符或数字数据类型,那么最终的结果就可以在此字段中存储任何字符和数字类型的数据,而它们并不代表一个日期。最后,选择正确的数据类型会带来正确的执行计划,从而改善数据库性能。...,输入为三个整数,输出为其中的最大。...函数 ,利用标准体重计算公式,根据身高判断体重是否合乎标准 1 )输入:身高,体重,性别 2 )输出:体重超出标准多少的判断 3 )调用函数实现类似如下的输出 T-SQL程序代码 create...多语句表函数 ,根据父母的血型列出孩子的所有可能血型 1 )输入:父亲血型,母亲血型 2 )输出:孩子的所有可能血型 3 )要求:使用 多语句表函数 实现(不要试图建表) 4 )调用函数实现类似如下的输出

10700
领券