sqlserver基础复习

1.聚集索引,填充因子:表示索引的填满程度,数据更新越多,索引建立的次数和空间要的越多,所以要留空的越多,相应的填充因子的填满程序要越小,为了留出更多的空间.

2.sqlserver性能优化的建议:

a)首先查看是否有死锁!!!

b)sql优化:使用分析工具,定位到耗时比较多sql,进一步优化sql;优化sql编写:比如select(*),like,in/not in等;视图或存储过程的建立(严格来说按设计原则尽量减少数据库逻辑的实现,尽量把逻辑放在代码层,存储过程多作为一些工具,比如通用分页存储过程)

c)表结构优化:建立/重建索引,选择合适的填充因子;垂直分库分表(把表字段分割到多个表中);水平分表(两种方式:1分区,把数据水平切割到几个一样结构中的子表中 ;2删除.或者直接冷备份处理只保留一定时间段的数据)

d)硬件升级:升级更高配置的硬件;加更多的服务器实现主从读写分离

f)当以上也不能解决时,考虑数据库集群和分布式/微服务架构实现

3.存储过程使用临时表代替游标

create proc demo_proc
@userid int,
@username varchar(20)
as
declare @id int
declare @name varchar(20)
declare @i int
begin
 create table #temp(  --建立临时表
    id int,
    username varchar(20),
    sortid int
 )
 insert into #temp select demo_id,demo_desc,row_number() over(ORDER BY demo_id)  from demotable; --临时表插入数据和一个自增字段
 set @i=0
 while @i<10
 begin
  select @id=id,@name=username from #temp where sortid=@i+1;
  set @i=@i+1
  print @id
  print @name
end
drop table #temp
end

4.分页

SQL语句分页
select top 10 * --使用子查询的结果查询前10行
from
(select *,ROW_NUMBER() over(order by demo_id) as rownum from demotable) as a --给原表查询结果增加自增字段
where rownum>20;
存储过程分页--事务和错误处理
create proc proc_page
@tablename varchar(50),
@pagesize int,
@curpage int 
as
declare @sql nvarchar(200)  --自建sql需要使用nvarchar
declare @tranError int
begin
    begin tran tran_page    --开始事务
    begin try    --开始异常
        set @tranError=0
        set @sql='
        select top ('+Convert(varchar,@pagesize)+') *
        from
        (select *,ROW_NUMBER() over(order by demo_id) as rownum from '+@tablename+') as a
        where rownum>'+Convert(varchar,@pagesize)+'*('+Convert(varchar,@curpage-1)+');' 
        exec SP_EXECUTESQL  @sql --执行分页sql
    end try   --结束异常
    begin catch  --开始处理异常
         set @tranError=@tranError+1
    end catch
    if(@tranError>0)  --判断是否有异常
    begin
        rollback tran tran_page  --回滚事务
    end
else 
    commit tran tran_page;   --提交事务
end

5.建分表,索引,视图

6.case when then else end用法.

“`
select *,case
when demo_id=1 then '1111' –多条件
when demo_id=2 then '2222'
when demo_id=3 then '3333'
else 'no' end
from demotable;

“`

7.主从

微信截图_20200331210654
a)发布订阅:https://blog.csdn.net/weixin_42799222/article/details/86579010

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值