SQL 优化 (总)

一、SQL 语句
1、Select:尽量不用Select星号语句,因为Select星号会全表扫描,导致sql语句性能大大降低。使用具体的列代替 星号,避免多余的列
2、Where:
(1) where 条件避免 前面加函数和操作
(2) 避免在where子句中使用!=或<>操作符,否则将引擎放弃索引进行全表扫描
3、Like:like 避免开头% 全局扫描
4、In:
(1) in 性能大于 join
(2) 可以使用in(select )
(3) exists进行代替

二、两方面  内存(程序)  和 磁盘(数据库) 去考虑 ,要预估数据量  放内存中更快  


三、必要可以冗余  ,多表可以冗余 ,经常变动的列 。 

比如用户表 姓名和部门  冗余到记录表里面 还有一个好处 可以获得到当时存的真实数据(名字 部门)
优化原因 :频繁去left表拿到常用字段

四、索引

1、主键索引 必建立
2、复合索引 命中  最左特性
3、
建立索引的列:
(1)  用于查询的字段 where
(2) 用于排序或分组的字段 order by 、group by
(3) 范围查询(时间范围) 、datetime
(4) 需要统计(count、sum、avg)
(5) 经常需要连表查询的字段 left on

五、注意:

1、in 性能大于 join
INNER JOIN和IN性能开销结论:
当INNER JOIN表中列数据是唯一的,此时INNER JOIN和IN的性能开销是相同的,当INNER JOIN表中列数据是重复的,此时IN性能要INNER JOIN要好。







posted @ 2023-08-28 10:47  不争丶  阅读(13)  评论(0编辑  收藏  举报