以下是mysql面试题目,答案一个个整理出来很麻烦,所以直接答案可以查看这里即可:
http://www.yayihouse.com/yayishuwu/book/217
1、 | 什么是索引? |
2、 | 索引是个什么样的数据结构呢? |
3、 | 为什么使用索引? |
4、 | Innodb为什么要用自增id作为主键? |
5、 | Hash 索引和 B+ 树索引有什么区别或者说优劣呢? |
6、 | 什么是聚簇索引 |
7、 | 说一说索引的底层实现? |
8、 | 索引有哪些优缺点? |
9、 | 聚簇索引和非聚簇索引的区别 |
10、 | MyISAM和InnoDB实现B+树索引方式的区别是什么? |
11、 | MySQL中有几种索引类型,可以简单说说吗? |
12、 | 覆盖索引是什么? |
13、 | 非聚簇索引一定会回表查询吗? |
14、 | 联合索引是什么?为什么需要注意联合索引中的顺序? |
15、 | 创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因? |
16、 | 那么在哪些情况下会发生针对该列创建了索引但是在查询的时候并没有使用呢? |
17、 | 为什么Mysql用B+树做索引而不用B-树或红黑树、二叉树 |
18、 | MySQL索引种类 |
19、 | 索引在什么情况下遵循最左前缀的规则? |
20、 | 什么是事务? |
21、 | ACID是什么?可以详细说一下吗? |
22、 | MySQL中为什么要有事务回滚机制? |
23、 | 数据库并发事务会带来哪些问题? |
24、 | 怎么解决这些问题呢?MySQL 的事务隔离级别了解吗? |
25、 | Innodb使用的是哪种隔离级别呢? |
26、 | 不可重复读和幻读区别是什么?可以举个例子吗? |
27、 | 对 MySQL 的锁了解吗? |
28、 | MySQL 锁的分类 |
29、 | 行级锁、表级锁、页级锁的描述与特点 |
30、 | 共享锁 、 排他锁的描述 |
31、 | 悲观锁与乐观锁 |
32、 | 数据库悲观锁和乐观锁的原理和应用场景分别有什么? |
33、 | MySQL常用存储引擎的锁机制? |
34、 | InnoDB 存储引擎有几种锁算法? |
35、 | 什么是死锁? |
36、 | 死锁出现的案列? |
37、 | 如何处理死锁? |
38、 | 如何避免死锁? |
39、 | Innodb默认是如何对待死锁的? |
40、 | 如何开启死锁检测? |
41、 | 什么是全局锁?它的应用场景有哪些? |
42、 | 使用全局锁会导致的问题? |
43、 | 优化锁方面你有什么建议? |
44、 | MySQL 支持哪些存储引擎? |
45、 | InnoDB 和 MyISAM 有什么区别? |
46、 | 你了解MySQL的内部构造吗?一般可以分为哪两个部分? |
47、 | 说一下MySQL是如何执行一条SQL的?具体步骤有哪些? |
48、 | SQL 的执行顺序? |
49、 | 简述触发器、函数、视图、存储过程? |
50、 | 听说过视图吗?那游标呢? |
51、 | 视图的作用是什么?可以更改吗? |
52、 | 为什么要尽量设定一个主键? |
53、 | 主键使用自增 ID 还是 UUID? |
54、 | 字段为什么要求定义为not null? |
55、 | 说一说Drop、Delete与Truncate的共同点和区别? |
56、 | 数据库中的主键、超键、候选键、外键是什么? |
57、 | MySQL 中的 varchar 和 char 有什么区别? |
58、 | varchar(10) 和 int(10) 代表什么含义? |
59、 | MySQL的binlog有有几种录入格式?分别有什么区别? |
60、 | 超大分页怎么处理? |
61、 | 说一说三个范式? |
62、 | left join、right join以及inner join的区别? |
63、 | 什么是sql注入? |
64、 | 简述数据库的读写分离? |
65、 | MySQL数据库cpu飙升的话,要怎么处理呢? |
66、 | MYSQL的主从延迟,你怎么解决? |
67、 | 如果让你做分库与分表的设计,简单说说你会怎么做? |
68、 | count(1)、count(*)与count(列名)的执行区别 |
69、 | sql 语句中where 1=1的作用 |
70、 | sql中null与空值的区别 |
71、 | 日常工作中你是怎么优化SQL的? |
72、 | 表结构优化 |
73、 | SQL查询优化 |
74、 | 索引优化 |
75、 | sql慢查询优化 |
sql慢查询优化
答:
优化慢查询是提高数据库性能和响应时间的重要任务。下面列举了一些常见的SQL慢查询优化技巧:
1. 分析慢查询日志:通过分析数据库的慢查询日志,找出耗时较长的SQL语句。根据查询的执行计划、索引使用情况和开销等信息,定位潜在的性能瓶颈。
2. 优化查询语句:对于慢查询,可以优化查询语句的结构和写法,以提高查询效率。例如,避免使用函数和表达式作为过滤条件,优化JOIN操作,减少子查询的使用等。
3. 优化索引设计:确保查询涉及的列都有合适的索引。通过分析查询的过滤和排序条件,选择合适的索引类型和列顺序,以提高索引的使用效率。
4. 避免全表扫描:全表扫描是慢查询的常见原因之一。通过添加合适的索引、重新设计查询条件或采用分区技术等方式,避免全表扫描,提高查询效率。
5. 优化数据模型:根据业务需求和查询频率,对数据模型进行优化。合理设计表结构、拆分大表、分散历史数据等,减少查询的数据量和复杂度。
6. 避免大事务操作:大事务操作会占用较长时间的锁,影响并发性能。尽量将长时间的事务拆分为多个小事务,减少锁资源的争用。
7. 控制返回结果集的大小:对于大数据量的查询,通过使用LIMIT或TOP等关键字限制返回的结果集大小,避免在网络中传输大量数据。
8. 缓存查询结果:对于频繁查询且更新不频繁的数据,考虑使用缓存技术(如Redis)缓存查询结果,减少数据库的访问频率,提高响应速度。
9. 定期维护和优化数据库:定期进行数据库的维护操作,如重建索引、更新统计信息、清理无用的数据等,保持数据库的良好状态和性能。
10. 利用性能调优工具:使用数据库提供的性能调优工具,如EXPLAIN、Query Analyzer等,分析查询执行计划和性能瓶颈,进行有针对性的优化。
在优化过程中,需要不断测试、监控和评估优化的效果,并及时调整优化策略。同时,与数据库管理员或专业的性能优化工具一同使用,以获得更好的查询性能和性能调优结果。