SQL语句优化

1、在查询中毫无使用“select *” 
检索不必要的列会带来额外的网出,有句话称“该省的虽省”;

2、在select清单中避免不必要的排列,在连条件中避免不必要之说明;

3、不要在子查询中采用count()求与行存在性检查

4、避免使用有限独不等种类的列进行表的总是

5、避免死锁

6、避免以count(*)获得表的记录数

(1)为了博表中的记录数,我们日常以下的SQL 语句: SELECT COUNT(*)
FROM dbo.orders 这漫漫语句会执行全表扫描才会收获行数。 (2)但下的SQL
语句不见面实行全表扫描一样好得到行数: SELECT rows FROM sysindexes

WHERE id = OBJECT_ID(‘dbo.Orders’) AND indid < 2

7、避免使动态SQL。(1)动态SQL 难以调试和故障诊断;      
(2)如果用户为动态SQL 提供了输入,那么可能在SQL 注入风险。

8、在描写存储过程被,在起勾画set  nocount on  ,结束写set nocount off

(当 SET NOCOUNT 为 ON 时,不返计数(表示于Transact-SQL
语句影响之行数)。 当 SET NOCOUNT 为 OFF 时,返回计数(默认为OFF)。

即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。

当 SET NOCOUNT 为 ON 时,将不吃客户端发送存储过程中之每个语句的
DONE_IN_PROC 信息。当以 Microsoft® SQL Server™
提供的实用工具执行查询时,在 Transact-SQL 语句(如
SELECT、INSERT、UPDATE 和 DELETE)结束时用非见面当查询结果负显示”nn 行受影响”。

如果存储过程遭到涵盖的局部口舌并无回来许多其实的多少,则该装置由大量抽了网络流量,因此而显著增强性能。

SET NOCOUNT 设置是当履行或者运行时设置,而未是在分析时设置。

注解当SET NOCOUNT 为ON 时,不归计数(表示给Transact-SQL
语句影响之行数)。当SET NOCOUNT 为OFF 时,返回计数。 …
结论:我们相应当存储过程的头颅加上SET NOCOUNT ON
这样的话,在脱离存储过程的时节长SET NOCOUNT OFF这样的话,以达优化)

相关文章