SQL的优化整理以及时间信息(持续更新)+ 中级以上sql

查询:10w数据信息的查询

举例:

SELECT TOP 10 *  FROM rlsc_users //查询时间(0.117s)

SELECT TOP 10 *  FROM RLSC_Users as ru ORDER BY CreateTime //查询时间(0.253s)

SELECT TOP 10 *  FROM rlsc_users  as ru ORDER BY CreateTime  //查询时间(0.355s)

前2句sql,区别RLSC_Users的大小写的关系,RLSC_Users为数据库名字,虽然不区分大小写,但是速度还是区别,网络接口不稳定,服务器请求多......等原因?

SELECT TOP 100 *  FROM RLSC_Users as ru ORDER BY CreateTime //查询时间(0.783s)

SELECT TOP 1000 *  FROM RLSC_Users as ru ORDER BY CreateTime //查询时间(34.591s)

SELECT TOP 10000 *  FROM RLSC_Users as ru ORDER BY CreateTime //查询时间(.......死了.......)

以上数据都是10倍的递增,但是查询时间明显从100以上开始,就出现类似几次幂的狂增模式

SELECT TOP 10 ru.Nation,ru.City,ru.ComputerGrade,ru.IdCard FROM RLSC_Users as ru ORDER BY CreateTime //查询时间(0.084s)

SELECT TOP 100 ru.Nation,ru.City,ru.ComputerGrade,ru.IdCard FROM RLSC_Users as ru ORDER BY CreateTime //查询时间(0.158)

从以上数据分析我们查询时具体到需要的字段,也是sql优化的必要项 节省3倍以上的时间

存储过程的比较

但语句执行 存储过程是要慢于直接的语句查询的?在单语句的时候没有比较的必要性,比较结果差别不大!

一些常用的sql语句

(1)添加一个Id自增的不存在的字段

SELECT row_number()over(order by trainCompanyId) as Id,cc.trainCompanyId as Name from CYPX_CmpUser as cc GROUP BY cc.trainCompanyId

(2)删除 一个表中所有重复的数据字段

delete from CYPX_User
where   idCard in (select idCard    from CYPX_User group by idCard      having count(idCard) > 1)
and   DOrder not in (select min(DOrder) from CYPX_User group by idCard     having count(idCard)>1)

(3)修改外键表中所有的UserId字段,以身份证号连接,使其与User表相对应

UPDATE CYPX_CmpUser set CYPX_CmpUser.UserId=(select CYPX_User.DOrder from CYPX_User 
where CYPX_User.idcard=CYPX_CmpUser.idcard)  where CYPX_CmpUser.idcard in (select CYPX_User.idcard from CYPX_User)

(4)按照月份 进行 分组,统计一年每个月的Count()数据 substring Convert的使用

select substring(Convert(varchar(10),CYTime,120),6,2) as name,count(*)  as id 
from CYPX_EntityPay where YEAR(CYTime)=@year group by substring(Convert(varchar(10),CYTime,120),6,2)

(5)2张数据表的对比,一张作为数据源表去更新比外一张表 使用MERGE INTO

  




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值