基本要求:
1,配置最大服务器内存,为操作系统和其他服务程序预留足够内存;
2,将主数据库的数据文件拆分成多个文件;将数据文件和日志文件放在不同物理磁盘,提高io并发;系统数据库Tempdb数据文件放在独立物理磁盘,并拆分多个,最好与cpu个数相同,提高并发;
3,默认值约束性能影响极低;Check约束保持逻辑尽量简单;唯一约束至少有一个,提高查询;外键约束时,子表关联字段需要建立索引(子表为日志表,历史表等除外);
TSql优化:
1,select语句
a,只查询需要的字段;
b,尽量限制结果集大小;
2,order by 语句
a,尽量在排序字段加上索引;
b,尽量控制排序的数据量;数据量过大则会使用Tempdb,增大磁盘io,所以必须加索引;
3,Group by 语句
a,尽量使用索引;
b,distinct等同于group by;
4,update语句
a,update会对select造成阻塞,小数据量更新,使用主键或者唯一键过滤需要更新的数据;
b,大数据量或者复杂更新,预先计算好结果,分批更新;
5,delete语句
a,Truncate table tablename;删除表,并且不记录日志,性能优;
b,delete会记录日志,将删除的数据整条记录下来,并且还会更新索引,减少删除操作,合理设计表结构;
6,where语句
a,合理利用索引;
b,减少函数计算,会影响索引使用;
7,子查询
a,子查询尽量写在where子句中;
b,子查询数量不超过3个,整个查询语句涉及的表不超过5个;
8, 字段合并尽可能使用for xml子句;
9,连接操作,尽可能使用索引字段;小数据作为主查询;
10,批量操作
a,bulk insert;
b,insert select;
c,select into插入新表;
d,output子句;
e,merge数据合并;
f,bcp工具;