1.如何开启慢查询?(步骤)
输入指令show variables like ‘%slow%’;
查看slow_query_log的值 OFF表示未开启
输入指令set global slow_query_log=on;
2.如何分析慢查询?主要看什么参数?
使用mysql程序自带的mysqldumpslow命令分析
-s:是表示按照何种方式排序,子参数如下:
c、t、l、r:分别是按照记录次数、时间、查询时间、返回的记录数来排序,
ac、at、al、ar:表示相应的倒叙;
-t:返回前面多少条的数据,这里意思就是返回10条数据了(也可以说是前十)
-g:后边可以写一个正则匹配模式,大小写不敏感的,比如:
/path/mysqldumpslow -s r -t 10 /tmp/slow-log,得到返回记录集最多的10个查询。
/path/mysqldumpslow -s t -t 10 -g “left join” /tmp/slow-log,得到按照时间排序的前10条里面含有左连接的查询语句。
3.什么是3NF设计表?
1NF 指的是数据库表中的任何属性都是原子性的,不可再分。
2NF 指的数据表里的非主属性都要和这个数据表的候选键有完全依赖关系。
3NF 在满足 2NF 的同时,对任何非主属性都不传递依赖于候选键。
4.myisam与innodb的区别?
- InnoDB 支持事务,MyISAM 不支持事务。
- InnoDB 支持外键,而 MyISAM 不支持。
- InnoDB 是聚集索引,MyISAM 是非聚集索引。
- InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。
5.索引的概念是什么?原理是怎样的?
索引是存储引擎用于快速查找记录的一种数据结构。在MySQL中,也叫作 “键(key)”。
6.索引的创建原则有哪些?
为经常出现在关键字order by、group by、distinct后面的字段,建立索引。
在union等集合操作的结果集字段上,建立索引。
为经常用作查询选择的字段,建立索引。
在经常用作表连接的属性上,建立索引。
7.索引的分类有哪些?
普通 唯一 主键 全文
8.复合索引的使用原则?
一般遵循最左前缀原则
9.水平分表?水平分表的原则是什么样的?
一条记录一条记录切断分出来!叫水平分表
原则是看需求
11.dql 中有哪些写法会导致索引失效?
- 以%开头的LIKE查询
- 类型的隐式转换(字符转数字会失效,数字转字符不会失效)
- 合索引不满足最左原则
- MYSQL优化器估计使用索引比全部扫描要慢
12.分页偏移量大的时候如何优化?
子查询优化
倒排表优化
反向查找优化
limit限制优化