月度归档:2019年01月

mssql sqlserver 时间判断处理方法分享


摘要:
下文讲述sqlserver时间判断脚本的编写异常现象,如下所示:
实验环境:sql server 2008 R2


例:

  create table [maomao365] (keyId int,writeDate datetime)
  go 
  insert into  [maomao365](keyId,writeDate) values
  (1,'2019-1-19 19:35:12.681')
  go
   ----运行以下脚本
  select * from [maomao365]  
    where writeDate >'2019-1-19 19:35:12'
   ----返回结果为------
   keyId, writeDate 
      1      '2019-1-19 19:35:12.681' 
    
  go
  truncate table [maomao365] 
  drop      table [maomao365] 
    

出现以上返回值的原因为:
时间格式查询时,没有输入相应的毫秒信息,查询的时候默认将毫秒转换为0,我们需要在查询时,统一将字段中的毫秒信息提出

select * from [maomao365]
where convert(varchar, writeDate,121) >’2019-1-19 19:35:12′

mssql sqlserver 数据检索数据慢及相关处理办法分享


摘要:
下文讲述平时遇到数据库查询慢及处理方法分享,如下所示:
实验环境:sql server 2008 R2


常见原因如下:
1.未设置相关索引,导致检索中用到指定列导致,由于业务设计的变化导致索引缺失

2.随着系统数据增加,并发增加,导致IO增加,服务器负载无法适应系统要求,需加大服务器相关配置

3.主数据表上未设置相关的合并缓存列,导致查询发生过多的计算

4.内存不足,无法满足系统计算要求

5.网络异常,导致并发大的时候,网络传输速度慢

6.采用了 select * 查询,返回过多的不需要使用的列

7.业务逻辑设计异常,并发大时,产生相应的死锁信息

8.查询语句,使用了过多的子查询,导致效率低小

———————-相关优化方法分享 ——————-

1. 数据库文件的存放位置分别放入不同的硬盘上
2. 表分割
3. 升级服务器硬件
4. 建立合适的索引
5. 加快网络速度或升级硬件
6. 定期重建索引,避免索引碎片,定期备份日志,使用数据库文件尽可能小
7. 查询服务器和报表服务器分开

mssql sqlserver 记录一个数据库异常的排查原因(数据库sql查询时间过长的原因)


摘要:
下文讲述一次数据库查询时间过长的处理方法,
(查询分析器中查询超级快,但是程序中查询非常慢的异常现象)
如下所示:
实验环境:sqlserver 2008 R2


今天为一张报表增加一个查询条件,查询条件上所对应的字段已经添加了相关索引,数据表中数据为8000万条数据,
程序运行后,需要十秒才能检索出数据,当我们把sql脚本copy到查询分析器中运行,发现只需要0.01秒就可以检索出数据,通过跟踪执行计划,我们发现然后是数据类型惹的祸。

数据类型中此字段为”varchar”类型,程序中传入为string类型被转换为nvarchar类型,当传入的参数类型同数据库不一致时,索引实效,所以导致查询变的非常慢。