MySQL面试题

一、本文主旨

二、面试题

2.1 索引的建立原则:

:建立索引时,我们应该尽量选择唯一性索引,对高频查询字段、以及经常需要排序、分组、联合操作的字段建立索引;索引应当尽量选择数据量小的字段,如果特殊情况需要使用到数据量大的字段,那么最好使用其前缀来索引;同时要避免索引的滥用,过多的索引会增加修改表的操作,占用更多的磁盘啊空间,并且难以保证每个索引都能有效利用,像数据量小的表使用索引更会带来负优化,最好能定期维护、删除不必要的索引;

:有以下八条:
1. 选择唯一性索引;
2. 对高频查询字段创建索引;
3. 对经常需要排序、分组、联合操作的字段建立索引(order by,group by,distinct,union);
4. 限制索引的数目(大量索引会增加修改表的操作,占用磁盘空间,并且难以保证每一个索引都能得到有效利用);
5. 尽量使用数据量小的字段作为索引;
6. 数据量小的表最好不要用索引,会造成负优化;
7. 数据量大的字段最好使用前缀来索引(前面的若干字符,如TEXT 和 BLOG 类型);
8. 删除不再使用、使用少的索引;

2.2 查看MySQL语句执行计划(explain关键字有没有使用过)

:explain关键字,能帮助我们了解SQL语句的执行计划,从生效索引、连接类型、实际采用SQL运行优化选择等角度去优化SQL;

:下表解释了explain关键字的每一个字段,她能帮我们了解SQL的执行计划,观其性,我们能对生效索引、连接类型、实际采用SQL运行优化选择等角度去优化SQL;

mysql> explain select * from student s, usr u where u.name=s.name;
+----+-------------+-------+------+---------------+------+---------+------+------+--------------------------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra                          |
+----+-------------+-------+------+---------------+------+---------+------+------+--------------------------------+
|  1 | SIMPLE      | u     | ALL  | NULL          | NULL | NULL    | NULL |    4 |                                |
|  1 | SIMPLE      | s     | ALL  | NULL          | NULL | NULL    | NULL |    9 | Using where; Using join buffer |
+----+-------------+-------+------+---------------+------+---------+------+------+--------------------------------+
2 rows in set (0.00 sec)
字段含义
id操作表的顺序,越大优先级越高,同级由上至下
select_type查询类型
table输出行所引用的表
type连接使用的类型,最差的是all全表扫描
possible_keys可以使用哪些索引有助于查询
key实际使用的索引
key_len索引长度
ref索引的那一列被使用了
rows必须检查的用来返回请求数据的行数
Extrasql语句实际运行的优化选择
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mitays

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值