本篇总结的是MySQL知识相关的面试题,后续也会更新其他相关内容
答:区别如下:
一般来讲:
答:union
和union all
的作用都是将两个结果集合并到一起。
union
会对结果去重并排序;union all
直接直接返回合并后的结果,不去重也不进行排序;union all
的性能比union
性能好;答:MySQL在执行SQL语句的时候会临时创建一些存储中间结果集的表,这种表被称为临时表,临时表只对当前连接可见,在连接关闭后,临时表会被删除并释放空间。
临时表主要分为内存临时表和磁盘临时表两种:
一般在以下几种情况中会使用到临时表:
FROM
中的子查询DISTINCT
查询并加上ORDER BY
ORDER BY
和GROUP BY
的子句不一样时会产生临时表UNION
查询会产生临时表答:
答:主键是唯一区分表中每一行的唯一标识,如果没有主键,更新或者删除表中特定的行会很困难,因为不能唯一准确地标识某一行。
答:慢查询日志一般用于记录执行时间超过某个临界值的SQL语句的日志。
相关参数
slow_query_log
:是否开启慢查询日志,1表示开启,0表示关闭。slow_query_log_file
:MySQL数据库慢查询日志存储路径。long_query_time
:慢查询阈值,当SQL语句查询时间大于阈值,会被记录在日志上。log_queries_not_using_indexes
:未使用索引的查询会被记录到慢查询日志中。log_output
:日志存储方式。“FILE”
表示将日志存入文件。“TABLE”
表示将日志存入数据库。如何对慢查询进行优化?
答:我们先来看一下自增ID与UUID的区别:
自增ID:在设计表时将id字段的值设置为自增的形式。
使用自增ID的好处
使用自增ID的缺点
UUID:通用唯一标识码,UUID是基于当前时间、计数器和硬件标识等数据计算生成的。
使用UUID的优点
使用UUID的缺点
最后说下结论:
答:首先说一点,NULL和空值是不一样的,空值是不占用空间的,而NULL是占用空间的,所以字段设为NOT NULL后仍然可以插入空值。
字段设置成NOT NULL主要有以下几点原因:
COUNT
,遇到NULL值,这条记录不会统计在内。NOT IN
子查询在有NULL值的情况下返回的结果都是空值。有三种格式,statement
,row
和mixed
:
statement
级别下,每一条会修改数据的sql都会记录在binlog中。 row
级别下,不记录sql语句上下文相关信息,仅保存哪条记录被修改。 mixed
级别,一种折中的方案,普通操作使用statement记录,当无法使用statement的时候使用row。此外,新版的MySQL中对row级别也做了一些优化,当表结构发生变化的时候,会记录语句而不是逐行记录。
上一篇:深圳市律师行业团委成立