2021数据库考试题及答案 mysql题目和详细答案( 九 )


key_len只计算where条件用到的索引长度,而排序和分组就算用到了索引,也不会计算到key_len中 。
9. ref如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段,如果是条件使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示为func
10. rows(重要)rows 也是一个重要的字段 。这是mysql估算的需要扫描的行数(不是精确值) 。这个值非常直观显示 SQL 的效率好坏, 原则上 rows 越少越好.
11. filtered这个字段表示存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例,注意是百分比,不是具体记录数 。这个字段不重要
12. extra(重要)EXplain 中的很多额外的信息会在 Extra 字段显示, 常见的有以下几种内容:
distinct:在select部分使用了distinc关键字Using filesort:当 Extra 中有 Using filesort 时, 表示 MySQL 需额外的排序操作, 不能通过索引顺序达到排序效果. 一般有 Using filesort, 都建议优化去掉, 因为这样的查询 CPU 资源消耗大.# 例如下面的例子:mysql> EXPLAIN SELECT * FROM order_info ORDER BY product_name G*************************** 1. row ***************************id: 1select_type: SIMPLEtable: order_infopartitions: NULLtype: indexpossible_keys: NULLkey: user_product_detail_indexkey_len: 253ref: NULLrows: 9filtered: 100.00Extra: Using index; Using filesort1 row in set, 1 warning (0.00 sec)我们的索引是KEY `user_product_detail_index` (`user_id`, `product_name`, `productor`)但是上面的查询中根据 product_name 来排序, 因此不能使用索引进行优化, 进而会产生 Using filesort.如果我们将排序依据改为 ORDER BY user_id, product_name, 那么就不会出现 Using filesort 了. 例如:mysql> EXPLAIN SELECT * FROM order_info ORDER BY user_id, product_name G*************************** 1. row ***************************id: 1select_type: SIMPLEtable: order_infopartitions: NULLtype: indexpossible_keys: NULLkey: user_product_detail_indexkey_len: 253ref: NULLrows: 9filtered: 100.00Extra: Using index1 row in set, 1 warning (0.00 sec)Using index“覆盖索引扫描”, 表示查询在索引树中就可查找所需数据, 不用扫描表数据文件, 往往说明性能不错Using temporary查询有使用临时表, 一般出现于排序, 分组和多表 join 的情况, 查询效率不高, 建议优化.23.表最多可创建多少列,多少索引?前言: 网上关于一张mysql表最多可以创建多少个索引?基本就是两种答案,一种是不限制,一种是16列, 我认为16的由来应该网上传着传着给扭曲, 因为mysql的单个索引最多能包括16列,但是这个是一个索引包含几列的答案而不是一张可以建多少个索引.真的是误导人啊!因为mysql的一些限制跟具体存储引擎有关,为此以下只列出我们最常用的innoDB和myisam,其他存储引擎的具体限制可以去官网找.innoDB: 最多创建1017列, 最多64个二级索引, 单个索引最多包含16列, 索引最大长度767字节(其实行格式为REDUNDANT,COMPACT最高为767字节,但行格式为DYNAMIC,COMPRESSED最高可达为3072字节), 行大小最大65536字节mysiam: 最多4096列, 最多64个二级索引, 单个索引最多包含16列, 索引最大长度1000字节, 行大小最大65536字节mysql官方文档地址innoDB限制的官方文档: https://dev.mysql.com/doc/refman/8.0/en/innodb-limits.htmlmyisam限制的官方文档: https://dev.mysql.com/doc/refman/8.0/en/myisam-storage-engine.html这个问题要根据Mysql具体版本,具体引擎来回答.
24.为什么最好建立一个主键?主键是数据库确保数据行在整张表唯一性的保障,即使业务上本张表没有主键,也建议添加一个自增长的ID列作为主键.设定了主键之后,在后续的删改查的时候可能更加快速以及确保操作数据范围安全.
25.字段为什么要求建议为not null?MySQL官网这样介绍:


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: