1、尽量使用临时表暂存中间结果。
select * into #temp from sysobjects
insert into #temp select test from table
2、如果需要使用模糊查询时,尽量使用LIKE %的方式查询,注意:"关键字"前尽量不要用%,就这样变成了全文检索,大大影响了查询速度
select * from table where like '中%'
3、尽量使用变量的形式赋值。
select *from table where id=@id
4、限制结果集(要尽量减少返回的结果行,包括行数和字段列数。尽量避免查询的时候用*来代替所有字段)
select id,name from table
5、查询结果如果只是用来显示数据,不需要用来操作“增、删、改”时,查询语句中加上 with(nolock)
select * from table with (nolock)
6、尽量使用存储过程:
一是存储过程的执行计划可以被缓存在内存中较长时间,减少了重新编译的时间。
二是存储过程减少了客户端和服务器的繁复交互。
三是如果程序发布后需要做某些改变你可以直接修改存储过程而不用修改程序,避免需要重新安装部署程序。
7、创建索引(无论是组合索引还是单个列的索引,尽量不要选择那些唯一性很低的字段)
CREATE NONCLUSTERED INDEX IX_TEST_TNAME --创建一个非聚集索引
ON TEST(TNAME) --为TEST表的TNAME字段创建索引
WITH FILLFACTOR = 30 --填充因子为30%
GO
8、查询数据表示表面前面最后加上dbo,如果没有加dbo则会在当前Schema下搜索,如果没有,再去dbo下面搜索,影响性能。
select id,name,sex from dbo.table
9、注意使用DISTINCT,在没必要的情况下尽量不要用,它与UNION一样会使查询速度变慢。