侧边栏壁纸
  • 累计撰写 793 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

优化

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 201 阅读 / 811 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
/ DATA / 优化

sql优化和索引常见的面试题(面试总结)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 1.什么是索引 索引指数据库的目录,比如:字典上面的字母目录 (适用于大数据量) 2.建立索引的优缺点 优点:查询速度快 缺点:增删改慢,因为数据库要同步去维护索引文件,所以速度慢 3.索引有哪些 普通 主键 唯一 组合 4. 索引检索为什么快 索引结构:B+Tree 5.一般你们会在什么情况下加索引 1.主键自动建立唯一索引 2.频繁作为查询条件的字段应该创建索引 3.查询中与其他表关联的字段,外键关系建立索引 4.单键/组合索引的选择问题,组合索引的性价比更高 5.查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度 6.查询中统计或者分组字段。 7.过滤条件好的字段选择一段选择加索引 6.怎么知道索引用没用上 通过explain查询sql执行计划,主要看key使用的是哪个索引 7.用过组合索引吗,是有序的吗 用过, 有序 8.什么情况下会使索引失效? 1.like 2.like "%123%,前面不能+% 3.使用 关键字 in ,or ,null,!= 9.
https://blog.csdn.net/weixin_44504146/article/details/92737613

1.查看执行时间和cpu占用时间
set statistics time on select * from dbo.Product set statistics time off


2.查看查询对I/0的操作情况
set statistics io on select * from dbo.Product set statistics io off

三范式
1.表设计是否规范,是否符合三范式的标准 (1)第一范式:保证原子性(不可拆分) (2)第二范式:每张表都有主键 (3)第三范式(每一列都有主键相关)
字段
查看数据表中是否存在大量的冗余字段,字段数据类型是否合理
尽可能的使用varchar代替char 建表数据类型
能用数值的绝对不用字符存储
尽量避免null值,使用默认值替代空值,数值型可以使用0,字符型可以使用空字符串
语法
or 用 union 代替 ( 如果第一个or能选中的数据后面的or就会排除掉,不会再扫描)
in 用 exists 代替
limit
选择正确的数据库引擎
用not exists代替not in
少用 in not in is null is not null <>

查看执行计划
EXPLAIN SELECT * FROM t_mobilesms_11 WHERE userid='2222'
1.
type是不是全表扫描
2.
看一下索引是否能够用的上,主要看key使用的是哪个索引
3.
看一下rows扫描行数是不是很大
in
优化成join
select * from a where id not in (collect)
not in 优化
select * from a left join (collect) c on a.id = c.id where c.id is null 
0

评论区