• sql server查询优化方法(海量数据)


    此方法只适用于对海量数据查询的优化,对于数据量较少的查询不具有参考性

    一、尽量避免全表扫描,使用索引

    1.在常用字段上面建立索引,方便查找

    2.避免null值判断。eg: where  xx is null。 改进:可以设置默认值代替null

    3.避免使用不等于操作符,如!=,<> 

    4.避免使用or。 可以使用union all代替。 eg:  where  age=1 or age=2 改成 ... where  age=1 union all .... where age=2

    5.避免使用 in/not in

    6.避免左模糊查询 eg: like '%杰'

    7.where 字句中避免使用参数。如果使用参数又想使用索引:

    select * from t with(index(索引名)) where num=@num

    8.避免使用表达式 eg: where  num/2=100

    9.避免对字段进行函数操作,比如substring,convert

    10.避免在等号左侧进行函数、表达式操作

    11.用exists代替in

    select num from a where num in(select num from b)
    
    //转化成
    
    select num from a where exists(select 1 from b where num=a.num)

    12.索引具备的条件:1.常用 2.不存在大量数据重复  3.建立索引不宜过多

    13.索引会降低insert/update效率

    14.对于数字类型的字段尽量使用数字类型,不使用字符串类型

    15.尽量使用varchar/nvarchar 代替char/nchar。因为变长字段存储空间小,易查询

    16.避免使用 * ,使用字段代替

    二、关于临时表

    1.避免频繁操作临时表

    2.一次性插入数据较大,可以使用select into代替create table

    3.使用了临时表之后,必须在最后将所有临时表显示删除,可以使用truncate table,再使用 drop  table

    4.避免使用游标操作大数据量(一万条以上)

    5.避免向客户端返回大数据量

    参考博客:

    https://blog.csdn.net/u013938578/article/details/81412091

     

    记录编程的点滴,体会学习的乐趣
  • 相关阅读:
    第8/24周 覆盖索引 临界点
    理解统计信息(1/6):密度向量
    索引碎片检测
    索引碎片
    索引深入浅出(10/10):创建索引时,键列位置的重要性
    索引深入浅出(9/10):过滤索引
    索引深入浅出(8/10):覆盖索引或列包含
    索引深入浅出(7/10):非唯一列上的非聚集索引
    索引深入浅出(6/10):选择正确并合适的聚集索引键
    索引深入浅出(5/10):非聚集索引的B树结构在堆表
  • 原文地址:https://www.cnblogs.com/AduBlog/p/14411233.html
Copyright © 2020-2023  润新知