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
评论区