zoukankan      html  css  js  c++  java
  • 查询语句优化简介

    身为一个后端开发,不懂数据库确实不合适。整理了一下数据库常识或者说小细节,方便自己日后复习。
    其次:新手会为了完成任务来书写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上 加上限制条件,减少笛卡尔乘积的数据 也是不错的优化方法。

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

                            

              



  • 相关阅读:
    [王爽汇编语言笔记]内存地址空间
    [zt]Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
    ubuntu下root 密码忘记的解决方法
    脱壳
    远程访问linux服务器
    【自己动手写操作系统学习笔记】1.hello world!
    不会溢出的除法
    javascript 数据类型和值(基础版)
    WebService 使用的简单例子
    SQL group by 和 having
  • 原文地址:https://www.cnblogs.com/fishyues/p/14530550.html
Copyright © 2011-2022 走看看