数据库优化的目标无非是避免磁盘I/O瓶颈.减少CPU利用率和减少资源竞争.1. 在业务密集的SQL当中尽量不采用IN操作符2. 不使用not in 因为它不能应用表的索引.用not exists 或(外连接+判断为空)代替3. 不使用<>,因为用它只会产生全表扫描.(a<>0改为a>0 or a<0)4. 不使用 is null 或 is not null 判断字段是否为空一般不用到索引.(a is not null 改为a>0)5. 用a>=3代替
问大神石沫:如何判断MSSQL数据库磁盘出现了瓶颈? 石沫(A1):您好,您的问题非常好,SQL SERVER提供了很多关于I/O压力的性能计数器,请选择性能计算器PhysicalDisk(LogicalDisk),根据我们的经验,如下指标的阈值可以帮助你判断IO是否存在压力: 1. %Disk Time :这个是磁盘时间百分比,这个平均值应该在85%以下 2. Current Disk Queue Length:未完成磁盘请求数量,这个每个磁盘平均值应该小于2. 3. Avg. Di
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描, Sql 代码 : select id from t where num is null; 可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询: Sql 代码 : select id from t where num=0; 3.应尽量避免在 wh
一个防止误删MSSQL数据库的方法 环境:Windows2008 R2 .SQL 2012 今天发现一个有趣的现象,之前数据库服务器的其中几个数据库做过镜像,不过现在已经删除了,今天又要在那台服务器上为一个库搭建镜像 搭建镜像的过程中,把镜像机器的ip写成了自己的ip,结果发现命令成功执行 --备机上执行 USE [master] GO ALTER DATABASE [CT_DB] SET PARTNER = 'TCP://192.168.1.106:5022'; --主机服务器的ip 192.
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存放在数据页上.合理的索引设计要建立在对各种查询的分析和预测上.一般来说: a.有大量重复值.且经常有范围查询( > ,< ,> =,< =)和 order by.group by 发生的列,可考虑建立集群索引; b.经常同时存取多列,且每列都含有重复值可考虑建立组合索引, 选择度高的列
SQL操作 1.有一个数据库表peope,表有字段name,age,address三个属性(注:没有主键).现在如果表中有重复的数据,请删去重复只留下其中的一条.重复的定义就是两条记录的name,age,address值都一样.关键是怎么把重复的数据过滤掉,后来我考虑的做法是这样的: 1 2 3 4 5 6 7 select * from people group by name,age,address having COUNT(DISTINCT name)=1 这样就可以把重复的数据过滤掉