sql优化和索引常见的⾯试题(⾯试总结)1.什么是索引
索引指数据库的⽬录,⽐如:字典上⾯的字母⽬录 (适⽤于⼤数据量)
2.建⽴索引的优缺点
优点:查询速度快
缺点:增删改慢,因为数据库要同步去维护索引⽂件,所以速度慢
3.索引有哪些
普通 主键 唯⼀ 组合
4. 索引检索为什么快
索引结构:B+Tree
5.⼀般你们会在什么情况下加索引
(1)主键⾃动建⽴唯⼀索引
(2)频繁作为查询条件的字段应该创建索引
(3)查询中与其他表关联的字段,外键关系建⽴索引sql语句优化方式
(4)单键/组合索引的选择问题,组合索引的性价⽐更⾼
(5)查询中排序的字段,排序字段若通过索引去访问将⼤⼤提⾼排序速度
(6)查询中统计或者分组字段。
(7)过滤条件好的字段选择⼀段选择加索引
6.怎么知道索引⽤没⽤上
通过explain查询sql执⾏计划,主要看key使⽤的是哪个索引
7.⽤过组合索引吗,是有序的吗
⽤过, 有序
8.什么情况下会使索引失效?
(1)like
(2)like “%123%,前⾯不能+%
(3)使⽤ 关键字 in ,or ,null,!=
9. sql优化您们是怎么做的?
⼀.⾸先开启数据库慢查询⽇志,定位到查询效率⽐较低的sql , 出对应的sql语句并进⾏分析
1.表设计是否规范,是否符合三范式的标准
(1)第⼀范式:保证原⼦性(不可拆分)
(2)第⼆范式:每张表都有主键
(3)第三范式(每⼀列都有主键相关)
2.查看数据表中是否存在⼤量的冗余字段,字段数据类型是否合理
3.尽可能的使⽤varchar代替char 建表数据类型,能⽤数值的绝对不⽤字符存储
4.尽量避免null值,使⽤默认值替代空值,数值型可以使⽤0,字符型可以使⽤空字符串
⼆.查看sql语句是否规范
(1)避免使⽤关键字:or ,in,not in ,!=,<>,避免使⽤select *
(2)尽量避免⼦查询,⼤部分⼦查询都可以连接查询
(3)⽤到or的地⽅可以使⽤union去代替实现
(4)⽤到in的地⽅可以使⽤exists去代替
三.分析sql的索引是否可以⽤上
(1) explain查询sql的执⾏计划,重点关注的⼏个列就是,type是不是全表扫描
(2)看⼀下索引是否能够⽤的上,主要看key使⽤的是哪个索引
(3)看⼀下rows扫描⾏数是不是很⼤

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。