数据的性能优化
其实,对于庞大的用户群以及海量的用户数据意味着基础设施的构建必须兼顾高效与稳定,更经济,扩展更方便的云服务平台就成为了选择,而且很多情况下,为了避免使用DISTINCT使用DISTINCT是为了保证在结果集中不出现重复值,但是DISTINCI关键子会产生张工作表,并进行排序以删除重复记录,这会大大增加查询时间和1O的次数。
因此应尽量免使用DISTINCT例如,不使用DISTINCT关键字,用户也可以通过如下语句从employee表中找出重复的idSELECTIdFROMemployeeGROUPBYidHAVINGCOUNT(1d)>11在实际使用中,DISTINCT关键字往往只用用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。
其实,对于记录行超过1万以上的大数据表来说,使用DISTINCT关键字会明显延长SELECT语句的执行时间。这是因为DISTINCT用二重循环查淘来实现消除重复记录,这就需要对数据表中的每行记录都进行比较,对于一个数据量非常大的表或视图来说,这样做无疑是会直接影响到数据库性能的。是不消除重复记录可以通过子查询、GROUPBY等其他方式实现。对于大数据表来说,用户尽量避免使用DISTINCT关键字。
存储过程存储过程是分析和编译后的SQL程序,可以包含巨大而复杂的查询或SQL操作,经过编译后存储在sql数据库中,客户应用程序通过引用其名称进行调用。
存储过程在第一次执行时建立优化的查询方案,SQLServer将查询方案保存在高速缓存中,在接下来的运行中就可以直接从高速缓存执行。省去了优化和编译阶段,从而节省了执行所需的时间。一个数据库系统的生命周期可以分成:设计、开发和成品三个阶段,在设计阶段进行数据库性能优化的成本最低,收益最大,在成品阶段进行数据库性能优化的成本。
最优的查询方案,往往要根据实际的要求和具体情况,通过比较进行选择。SQLServer提供的showplan可以对不同的查询结构的性能进行比较,包括查询计划、索引选择、IO次数、响应时间等。
小编结语:在开发过程中,可以使用这一有力工具。优化TSQL查询根本的原则是减少索引表的次数、避免非常复杂的逻辑、合理设计查询子句。