一个MySQL语句的问题?

我把所有Java相关的面试题和答案都整理成了PDF,并且带书签目录,阅读起来非常方便

面试题及答案PDF下载

面试题及答案PDF下载

面试题及答案PDF下载

1. 列值为NULL时,查询是否会用到索引?

在MySQL里NULL值的列也是走索引的。当然,如果计划对列进行索引,就要尽量避免把它设置为可空,MySQL难以优化引用了可空列的查询,它会使索引、索引统计和值更加复杂。

第一范式(1NF): 数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。
第二范式(2NF): 数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
第三范式(3NF): 在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如 果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系: 关键字段 → 非关键字段 x → 非关键字段y

  • 自适应哈希索引(ahi)

4. 上面提到了B+树在满足聚簇索引和覆盖索引的时候不需要回表查询数据,什么是聚簇索引?

在B+树的索引中,叶子节点可能存储了当前的key值,也可能存储了当前的key值以及整行的数据,这就是聚簇索引和非聚簇索引. 在InnoDB中,只有主键索引是聚簇索引,如果没有主键,则挑选一个唯一键建立聚簇索引.如果没有唯一键,则隐式的生成一个键来建立聚簇索引.

当查询使用聚簇索引时,在对应的叶子节点,可以获取到整行数据,因此不用再次进行回表查询.

5. 你们数据库是否支持emoji表情,如果不支持,如何操作?

如果是utf8字符集的话,需要升级至utf8_mb4方可支持

后面的问题,大家可以先自己独立思考一下。

另外我把所有Java相关的面试题和答案都整理出来了,给大家参考一下

面试题及答案PDF下载

面试题及答案PDF下载

面试题及答案PDF下载

7. 怎么解决这些问题呢?MySQL的事务隔离级别了解吗?

8. 一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录。

10. 索引的使用场景

11. MyISAM存储引擎应用场景有哪些?

12. 同时有多个事务在进行会怎么样呢?

14. 索引是什么?有什么作用以及优缺点?

18. 那么在哪些情况下会发生针对该列创建了索引但是在查询的时候并没有使用呢?

19. 如果要存储用户的密码散列,应该使用什么字段进行存储?

21. 关系型数据库有什么优势?

27. 索引对性能的影响:

28. 内连接分为三类

33. 以下三条sql 如何建索引,只建一条怎么建?

34. 创建索引的语法

37. 并发事务带来哪些问题?

38. 超大分页怎么处理?

39. 什么是存储过程?

42. 触发器的使用场景

43. 简单描述MySQL中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响?

44. 使用索引查询一定能提高查询的性能吗?为什么

45. SQL语句优化的一些方法?

54. MySQL都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了?

55. SQL 注入漏洞产生的原因?如何防止?

60. 做过哪些MySQL索引相关优化

61. 什么是存储过程?有哪些优缺点?

63. 如果一个表有一列定义为TIMESTAMP,将发生什么?

64. MySQL 里记录货币用什么字段类型好

66. 关心过业务系统里面的sql耗时吗?统计过慢查询吗?对慢查询都怎么优化过?

68. 存储引擎常用命令

69. InnoDB 存储引擎应用场景是什么?

72. 非聚簇索引一定会回表查询吗?

73. 为什么用 B+ 树做索引而不用哈希表做索引?

76. MySQL由哪些部分组成, 分别用来做什么

79. 唯一索引比普通索引快吗, 为什么

80. 什么是关系型数据库?

82. 如何在MySQL种获取当前日期?

83. ACID是什么?可以详细说一下吗?

85. Hash索引和B+树所有有什么区别或者说优劣呢?

88. 创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因?

89. Myql 中的事务回滚机制概述

90. 在建立索引的时候,都有哪些需要考虑的因素呢?

91. innodb的事务与日志的实现方式

93. 数据库的乐观锁和悲观锁是什么?

94. 横向分表和纵向分表,可以分别举一个适合他们的例子吗?

95. 优化数据库的方法

96. MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预计运维三年,怎么优化?

97. 简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)

101. 什么是视图?以及视图的使用场景有哪些?

102. 超键、候选键、主键、外键分别是什么?

104. 解释 MySQL 外连接、内连接与自连接的区别

108. 索引是个什么样的数据结构呢?

110. MySQL如何保证复制过程中数据一致性及减少数据同步延时

111. 什么情况下设置了索引但无法使用

112. 创建MySQL联合索引应该注意什么?

114. 为什么要尽量设定一个主键?

116. 联合索引是什么?为什么需要注意联合索引中的顺序?

117. 怎么看到为表格定义的所有索引?

119. 存储过程和函数好像差不多,你说说他们有什么区别?

124. 什么是触发器,MySQL中都有哪些触发器?

125. 六种关联查询

}

如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL 。下面介绍MySQL中如何查询慢的SQL语句

一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句

这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。

当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。

这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。

二、检测mysql中sql语句的效率的方法

为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录;

 这会输出记录次数最多的10条SQL语句,其中:
 -s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
 -t, 是top n的意思,即为返回前面多少条的数据;
 -g, 后边可以写一个正则匹配模式,大小写不敏感的;
 得到返回记录集最多的10个查询。
 得到按照时间排序的前10条里面含有左连接的查询语句。
最后总结一下节点监控的好处
1. 轻量级的监控,而且是实时的,还可以根据实际的情况来定制和修改
2. 设置了过滤程序,可以对那些一定要跑的语句进行过滤
3. 及时发现那些没有用索引,或者是不合法的查询,虽然这很耗时去处理那些慢语句,但这样可以避免数据库挂掉,还是值得的
4. 在数据库出现连接数过多的时候,程序会自动保存当前数据库的processlist,DBA进行原因查找的时候这可是利器
5. 使用mysqlbinlog 来分析的时候,可以得到明确的数据库状态异常的时间段
有些人会建义我们来做mysql配置文件设置

}

我要回帖

更多关于 数据库基本语句 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信