码迷,mamicode.com
首页 > 数据库 > 详细

代码优化之SQL优化

时间:2019-08-22 12:48:30      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:安全性   存储   操作符   体验   创建   条件   笛卡尔积   sql   用户体验   

一、为什么要做sql优化?

      在数据量较大,好的sql语句和合理的表结构,能够呈倍的提高执行效率,从而提高程序的可用性和用户体验性。

二、优化方向

       1.sql语句优化(尽量避免造成全表扫描)

          (1)查询时尽量不要用* 号

          (2)减少子查询和使用in,使用exits

                   例如 select id,name,age from student where id in (select id from javaCouse)

                    select id,name,age from student where id exits (select id from javaCouse)

          (3)尽量不要使用 or(or不走索引),用union进行结果集的合并,加入两个结果集不存在重复数据,那么最好用unionAll

          (4)那些可以过滤掉大量数据的条件必须记录在where子句的末尾

          (5)关联查询时用数据量较小的表做基表和通过where条件进行筛选以减小笛卡尔积

         (6)禁止在WHERE条件的上使用函数或者计算

         (7)禁止使用模糊查询 like ‘%%‘,如果需要用到,则尽量使用‘%‘

         (8)对null 的处理时候,只能采用is null或is not null,而不能采用=、in、<、<>、!=、not in这些操作符号。

       2.表结构设计

          (1)尽量减少不必要的关联查询,合理的增加“冗余”字段

          (2)合理的建立主外键,连接查询时用主外键进行连接

          (3)建立数据表时,能用int型的数据的字段尽量用int 型,因为int型的数据作为条件筛选时比字符串的类型快

          (4)在常用字段合理建立索引(折半查找)

          (5)尽量让字段名为not null ,给字段增加默认值,null值需要更多的存储空间,无论是表还是索引中每行中的null的列都需要额外的空间来标识

          (6) 不要在多字段的表中使用TEXT、BLOB类型,用主外键来对应,避免影响其它字段索引效率

      3.建立存储过程

        (1)存储过程只在创建时进行编译,sql语句则每次执行都需要编译。能提高数据库执行速度。

        (2)复用性高。

   (3)安全性高,可指定存储过程的使用权。

 ......

代码优化之SQL优化

标签:安全性   存储   操作符   体验   创建   条件   笛卡尔积   sql   用户体验   

原文地址:https://www.cnblogs.com/pamne/p/11393377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!