查询语句优化简介

身为一个后端开发,不懂数据库确实不合适。整理了一下数据库常识或者说小细节,方便自己日后复习。
其次:新手会为了完成任务来书写sql语句。老手会考虑性能来书写sql 语句。

First 首先,先明确 sql 查询语句的执行顺序:from 表名>on> where>group by>having>select 列名>distinct>order by>top  注:由于order by在 社科传统之后,可以使用select中定义的别名。有点秀

Second:索引。

              一般说来,索引应建立在那些将用于JOIN,WHERE判断和ORDERBY排序的字段上

              最常用的优化方法就是建索引。由于聚集索引只可以建一个,一般是主键,个别是联合主键。我们大多数建的是非聚集索引。

              建索引的原则是: 1.列中有null 不在该列建索引,建了也不走。

                                          2.列中有大量重复数据,也不要建索引。

                                           3.由于索引是按照最左匹配 来执行的。所以尽量将可以排除大量数据的列放在最左边。

                 

              关于走不走索引的问题,1.首先走不走索引和where条件的顺序没关系,会自动匹配最佳的索引顺序。

                                                    2,匹配索引是按照最左原则进行匹配, 比如我们建了a,b,c 三列的索引,那么就相当于有了(a,b,c),(a,b),(a)的三种情况都会走索引。

                                                  3.注意where后面的查询条件,比如 like '%a%',not in,!=, is null。还有就是不要对左边进行运算,要移到右边才可以。不过 like ‘a%’是会走索引。

                                                 4. in  除了走不走索引的问题,还有in 里面元素个数的限制。最好使用exist 来取代in。

          当使用join的时候 会使用笛卡尔乘积来进行查询匹配,最好是使用小表来驱动大表(小表在前,大表在后),on上 加上限制条件,减少笛卡尔乘积的数据 也是不错的优化方法。

暂时记录这些,有补充了再加。

 

 

                        

          

 

 

 

 



posted @ 2021-03-13 21:46  翱翔的小鱼  阅读(91)  评论(0编辑  收藏  举报