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

MySQL DBA面试高频三十问

为什么需要注意联合索引的顺序? MySQL可以使用多个字段同时建立一索引,叫做联合索引.联合索引,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引....事务是一系列的操作,他们要符合ACID特性.最常见的理解就是:事务的操作要么全部成功,要么全部失败.但是只是这样还不够的. 2、ACID是什么?可以详细说一下?...幻读: A事务读取了一范围的内容,而同时B事务在此期间插入了一条数据.造成"幻觉". 4、怎么解决这些问题呢?MySQL的事务隔离级别了解?...如果对语句的优化已经无法进行,可以考虑表的数据量是否太大,如果是的话可以进行横向或者纵向的分表. 6、上面提到横向分表纵向分表,可以分别举一适合他们的例子?...∗∗乱入了一奇怪的问题.....只是想单独记录一下这个问题,因为出现频率太高了.#会将传入的内容当做字符串,而会直接将传入值拼接在sql语句中. 所以#可以在一定程度上预防sql注入攻击.

2.7K31

MySQL面试高频一百问

联合索引是什么?为什么需要注意联合索引的顺序? MySQL可以使用多个字段同时建立一索引,叫做联合索引.联合索引,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引....事务是一系列的操作,他们要符合ACID特性.最常见的理解就是:事务的操作要么全部成功,要么全部失败.但是只是这样还不够的. 2. ACID是什么?可以详细说一下?...幻读: A事务读取了一范围的内容,而同时B事务在此期间插入了一条数据.造成"幻觉". 4. 怎么解决这些问题呢?MySQL的事务隔离级别了解?...如果对语句的优化已经无法进行,可以考虑表的数据量是否太大,如果是的话可以进行横向或者纵向的分表. 6. 上面提到横向分表纵向分表,可以分别举一适合他们的例子?...∗∗乱入了一奇怪的问题.....只是想单独记录一下这个问题,因为出现频率太高了.#会将传入的内容当做字符串,而会直接将传入值拼接在sql语句中. 所以#可以在一定程度上预防sql注入攻击.

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

MySQL面试高频100问(工程师方向)

联合索引是什么?为什么需要注意联合索引的顺序? MySQL可以使用多个字段同时建立一索引,叫做联合索引.联合索引,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引....事务是一系列的操作,他们要符合ACID特性.最常见的理解就是:事务的操作要么全部成功,要么全部失败.但是只是这样还不够的. 2. ACID是什么?可以详细说一下?...幻读: A事务读取了一范围的内容,而同时B事务在此期间插入了一条数据.造成"幻觉". 4. 怎么解决这些问题呢?MySQL的事务隔离级别了解?...如果对语句的优化已经无法进行,可以考虑表的数据量是否太大,如果是的话可以进行横向或者纵向的分表. 6. 上面提到横向分表纵向分表,可以分别举一适合他们的例子?...∗∗乱入了一奇怪的问题.....只是想单独记录一下这个问题,因为出现频率太高了.#会将传入的内容当做字符串,而会直接将传入值拼接在sql语句中. 所以#可以在一定程度上预防sql注入攻击.

54820

Mysql面试一百问

联合索引是什么?为什么需要注意联合索引的顺序? MySQL可以使用多个字段同时建立一索引,叫做联合索引.联合索引,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引....事务是一系列的操作,他们要符合ACID特性.最常见的理解就是:事务的操作要么全部成功,要么全部失败.但是只是这样还不够的. 2. ACID是什么?可以详细说一下?...幻读: A事务读取了一范围的内容,而同时B事务在此期间插入了一条数据.造成”幻觉”. 4. 怎么解决这些问题呢?MySQL的事务隔离级别了解?...如果对语句的优化已经无法进行,可以考虑表的数据量是否太大,如果是的话可以进行横向或者纵向的分表. 6. 上面提到横向分表纵向分表,可以分别举一适合他们的例子?...乱入了一奇怪的问题…..只是想单独记录一下这个问题,因为出现频率太高了. # 会将传入的内容当做字符串,而$会直接将传入值拼接在sql语句中. 所以#可以在一定程度上预防sql注入攻击.

74030

MySQL 面试高频一百问

为什么需要注意联合索引的顺序?」 MySQL 可以使用多个字段同时建立一索引,叫做联合索引。联合索引,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引。...最常见的理解就是:事务的操作要么全部成功,要么全部失败,但是只是这样还不够的。 「ACID是什么?可以详细说一下?」 A=Atomicity:原子性,就是上面说的,要么全部成功,要么全部失败。...幻读: A 事务读取了一范围的内容,而同时 B 事务在此期间插入了一条数据。造成"幻觉"。 「怎么解决这些问题呢?MySQL 的事务隔离级别了解?」...如果对语句的优化已经无法进行,可以考虑表的数据量是否太大,如果是的话可以进行横向或者纵向的分表. 「上面提到横向分表纵向分表,可以分别举一适合他们的例子?」...乱入了一奇怪的问题.....只是想单独记录一下这个问题,因为出现频率太高了。 # 会将传入的内容当做字符串,而 $ 会直接将传入值拼接在 sql 语句中

85630

MySQL常见面试题总结

联合索引是什么?为什么需要注意联合索引的顺序? MySQL可以使用多个字段同时建立一索引,叫做联合索引.联合索引,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引....事务是一系列的操作,他们要符合ACID特性.最常见的理解就是:事务的操作要么全部成功,要么全部失败.但是只是这样还不够的. 2. ACID是什么?可以详细说一下?...幻读: A事务读取了一范围的内容,而同时B事务在此期间插入了一条数据.造成”幻觉”. 4. 怎么解决这些问题呢?MySQL的事务隔离级别了解?...如果对语句的优化已经无法进行,可以考虑表的数据量是否太大,如果是的话可以进行横向或者纵向的分表. 6. 上面提到横向分表纵向分表,可以分别举一适合他们的例子?...∗∗乱入了一奇怪的问题…..只是想单独记录一下这个问题,因为出现频率太高了.#会将传入的内容当做字符串,而会直接将传入值拼接在sql语句中. 所以#可以在一定程度上预防sql注入攻击.

39510

写给工程师的 MySQL 面试高频 100 问!

MySQL可以使用多个字段同时建立一索引,叫做联合索引.联合索引,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引....事务是一系列的操作,他们要符合ACID特性.最常见的理解就是:事务的操作要么全部成功,要么全部失败.但是只是这样还不够的. 2. ACID是什么?可以详细说一下?...幻读: A事务读取了一范围的内容,而同时B事务在此期间插入了一条数据.造成"幻觉". 4. 怎么解决这些问题呢?MySQL的事务隔离级别了解?...如果对语句的优化已经无法进行,可以考虑表的数据量是否太大,如果是的话可以进行横向或者纵向的分表. 6. 上面提到横向分表纵向分表,可以分别举一适合他们的例子?...MyBatis 的 # 乱入了一奇怪的问题…..只是想单独记录一下这个问题,因为出现频率太高了. # 会将传入的内容当做字符串,而$会直接将传入值拼接在sql语句中.

56020

MySQL 高频面试题,都在这了

联合索引是什么?为什么需要注意联合索引的顺序? MySQL可以使用多个字段同时建立一索引,叫做联合索引.联合索引,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引....事务是一系列的操作,他们要符合ACID特性.最常见的理解就是:事务的操作要么全部成功,要么全部失败.但是只是这样还不够的. 2. ACID是什么?可以详细说一下?...幻读: A事务读取了一范围的内容,而同时B事务在此期间插入了一条数据.造成"幻觉". 4. 怎么解决这些问题呢?MySQL的事务隔离级别了解?...如果对语句的优化已经无法进行,可以考虑表的数据量是否太大,如果是的话可以进行横向或者纵向的分表. 6. 上面提到横向分表纵向分表,可以分别举一适合他们的例子?...乱入了一奇怪的问题.....只是想单独记录一下这个问题,因为出现频率太高了. # 会将传入的内容当做字符串,而$会直接将传入值拼接在sql语句中. 所以#可以在一定程度上预防sql注入攻击.

90371

企业面试题|最常问的MySQL面试题集合(二)

全连接(FULL JOIN) MySQL不支持全连接 可以使用LEFT JOIN UNIONRIGHT JOIN联合使用 SELECT * FROM A LEFT JOIN B ON A.id=B.id...优化查询过程的数据访问 访问数据太多导致查询性能下降 确定应用程序是否检索大量超过需要的数据,可能是太多行或列 确认MySQL服务器是否分析大量不必要的数据行 避免犯如下SQL语句错误 查询不需要的数据...确保GROUP BYORDER BY只有一的列,这样MySQL才有可能使用索引。...0,确保表num列没有null值,然后这样查询:select id from t where num= 3.应尽量避免 where 子句中使用!...如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择

1.7K20

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

4、InnoDBMyISAM,select count(*)哪个更快,为什么? MyISAM更快。因为MyISAM内部维护了一计数器,可以直接调取。...因此,大多数情况下,直接选择B+树索引可以获得稳定且较好的查询速度,而不需要使用hash索引。 20. 非聚簇索引一定会回表查询? 不一定。...什么是联合索引?为什么需要注意联合索引的顺序? MySQL可以使用多个字段同时建立一索引,叫做联合索引。联合索引,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引。...即要么全部成功,要么全部失败,不可能只执行一部分操作。 C=Consistency,指的是一致性。即系统(数据库)总是从一一致性的状态转移到另一一致性的状态,不会存在中间状态。...38. InnoDB 设置了 autocommit=0,添加一条信息之后没有手动执行提交操作,请问这条信息可以被查到

73210

MySQL必知必会分页whereupdatelimit字符串截取order by排序engthchar_lengthreplace函数1 键2 数据库事务的ACID3 视图4 删除连接

查询语句中可以使用一或者多个表,表之间使用逗号, 分割,并使用where设定查询条件 可以 where 子句中指定任何条件 可以使用 and 或者 or 指定一或多个条件 where 子句也可以运用于...表 set 列=新值 where 更新条件; 可以同时更新若干个字段 可以 where 子句中指定任何条件 当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的 可以单独表同时更新数据...联合主键的意义:用2字段(或者多个字段,后面具体都是用2字段组合)来确定一条记录,说明,这2字段都不是唯一的,2字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数。...一属性可以为作为一超键,多个属性组合在一起也可以作为一超键。超键包含候选键主键。 候选键: 是最小超键,即没有冗余元素的超键。 外键: 存在的另一表的主键称此表的外键。...如何使用 MySQL 的 JOIN 或多个表查询数据呢 可以 SELECT, UPDATE DELETE 语句中使用 MySQL 的 JOIN 来联合多表查询。

2.1K140

查看Mysql执行计划

const :读常量,且最多只会有一条记录匹配。表的一记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。因为只有一行,这个值实际就是常数,因为MYSQL先读这个值然后把它当做常数来对待。...eq_ref:最多只会有一条匹配结果,一般是通过主键或者唯一键索引来访问;连接MYSQL查询时,从前面的表,对每一记录的联合都从表读取一记录,它在查询使用了索引为主键或惟一键的全部时使用...ref:Join 语句中被驱动表索引引用查询,这个连接类型只有查询使用了不是惟一或主键的键或者是这些类型的部分(比如,利用最左边前缀)时发生。对于之前的表的每一联合全部记录都将从表读出。...如果为空,没有可能的索引,可以为相关的域从WHERE语句中选择合适的语句 4、key 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL选择优化不足的索引。...这种情况下,可以SELECT语句中使用USE INDEX(indexname)来强制使用一索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引key_len使用的索引的长度

3.3K10

MySQLB+树索引的应用场景大全

---- 三、最左前缀原则 我们的搜索语句中可以不用包含全部联合索引的列,只包含左边的就行,比方说下边的查询语句: SELECT * FROM demo_info WHERE key_part_1...虽然只能用到联合索引的一部分,利用后面的条件可以判断是否继续回表,从而加快查找速度。索引条件下推的特性是MySQL 5.6引入的,该特性是默认开启的。...发现一条记录符合条件就发送给客户端,客户端接收完全部的记录之后再展示! 接着server层向存储引擎层要求继续读刚才那条记录的下一条记录。...只要找到了最后一条记录,然后找到分组的第一条记录(上一槽的下一条记录),就可以在这个分组内小范围的遍历获取倒序的结果。这可比从页一条记录开始遍历获取倒序结果好的多,大大减少遍历时间。   ...如果你还单独建立一key_part1索引,那就是多此一举,因为根据联合索引的最左前缀原则就已经可以用到key_part1索引了,索引的建立维护也是需要时间空间的,这种不必要的开销应该避免。

37010

explain 深入剖析 MySQL 索引及其性能优化指南

key_len的值可以告诉你联合索引mysql会真正使用了哪些索引。 ...10.extra:附加信息 Using indexUsing where会遇到的比较多,可以重点记下,其他的没怎么遇到过了解即可,遇到具体问题可以查阅哈 1)Distinct  一旦MYSQL找到了与行相联合匹配的行...可以为相关的域从WHERE语句中选择合适的语句。 key 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MySQL选择优化不足的索引。...这种情况下,可以SELECT语句中使用USE INDEX(indexname) 来强制使用一索引或者用IGNORE INDEX(indexname)来强制MySQL忽略索引。...const 表示通过主键或惟一索引一次就找到了,查找时间为 O(1),可以认为是常数(constant),所以叫 const; eq_ref join 的时候,对于每个索引键,表只有唯一一条记录与之匹配

1.7K60

面试官:不会sql优化?出门右转顺便带上门,谢谢!

之前的多次面试中最常遇到的一问题的sql优化,不论是大厂还是小厂。...(3)UNION UNION的第二随后的select被标记为UNION。...(1)system 表只有一行数据(系统表) (2)const 通过索引一次就能找到的数据,比如primary key union key,主键where条件,就能将查询转换成一常量。...,因为它只需要开始于索引的某一点,而结束另一点,不用扫描全部索引。...需要注意的是:1、char字段一字符utf8编码下最多占3字节,可变长字段需要额外的两个字节记录长度,外加需要存入一null值,一null是一字节 2、复合索引有最左前缀的特性,如果复合索引能全部使用上

81020

php清空mysql数据表,mysql怎么清空数据表数据

mysql可以利用“DELETE”“TRUNCATE”关键字来清空数据表的数据,具体语法为“DELETE FROM 数据表;”“TRUNCATE TABLE 数据表;”。...MySQL DELETE关键字 MySQL 可以使用 DELETE 语句来删除表的一行或者多行数据。...删除表全部数据 示例:删除 tb_courses 表全部数据mysql> DELETE FROM tb_courses; Query OK, 3 rows affected (0.12 sec)...它们都用来清空表的数据。 DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一一模一样的新表,而不是逐行删除表的数据,执行数据比 DELETE 快。...因此需要删除表全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。 DELETE 删除数据后,配合事件回滚可以找回数据;TRUNCATE 不支持事务的回滚,数据删除后无法找回。

12.2K40

千万级数据表选错索引导致的线上慢查询事故

排查过程,查阅了许多资料,也学习了下MySQL优化器选择索引的基本准则,本文中进行解决问题思路的分享。本人MySQL了解深度有限,如果错误欢迎理性讨论指正。...「可以看到是有idx_city_id_typeidx_1索引的」,我们的查询条件是city_idtype,这两索引都是能走到的。 但是,我们的查询条件真的只要考虑city_idtype?...而这次代码查询条件实际结果为空,导致了扫描了全部的主键索引。 解决方案 知道了MySQL为何选择这个索引的原因后,我们就可以根据上面的思路来列举出解决办法了。...干涉优化器选择:写成子查询 还有什么办法?我们可以用子查询,子查询里先走city_idtype的联合索引,得到结果集后limit1选出第一条。...「最后做个文章总结:」 该慢查询语句中使用order by id导致优化器主键索引city_idtype的联合索引中有所取舍,最终导致选择了更慢的索引。

1.4K30

临时表和文件排序实现 group by

临时表 + 文件排序 研究使用临时表实现 group by 之前,一直有疑问:使用了临时表,为什么还要再进行文件排序呢?...: args,count() 函数可以对多个字段联合计数,args[0] ~ args[N] 保存着 count() 函数参数的字段引用。...初始化分组计数,Item_sum_count 类的实例属性 count 设置为 1。 如果当前读取记录的 e1 字段值一条记录的 e1 字段值一样,说明还是同一分组。...对于上面关于分组聚合的描述,大家可能会有疑问:想要聚合就一定要先进行分组? 这个当然不是,从实现角度来说,不分组也可以聚合。...如果当前读取记录的 e1 字段值一条记录的 e1 字段值一样,说明还是同一分组,进入第 4 步。 第 3 步,结束老分组,开启新分组。 结束老分组,把 e1 字段值分组计数发送给客户端。

1K30

MySQL选错索引导致的线上慢查询事故复盘

排查过程,查阅了许多资料,也学习了下MySQL优化器选择索引的基本准则,本文中进行解决问题思路的分享。本人MySQL了解深度有限,如果错误欢迎理性讨论指正。...可以看到是有idx_city_id_typeidx_1索引的,我们的查询条件是city_idtype,这两索引都是能走到的。 但是,我们的查询条件真的只要考虑city_idtype?...而这次代码查询条件实际结果为空,导致了扫描了全部的主键索引。 解决方案 知道了MySQL为何选择这个索引的原因后,我们就可以根据上面的思路来列举出解决办法了。...干涉优化器选择:写成子查询 还有什么办法?我们可以用子查询,子查询里先走city_idtype的联合索引,得到结果集后limit1选出第一条。...不说了,拿起巨厚的《高性能MySQL》,开始… 压住的泡面… 最后做个文章总结: 该慢查询语句中使用order by id导致优化器主键索引city_idtype的联合索引中有所取舍,最终导致选择了更慢的索引

94940
领券