1、没有创建索引,或者没有正确使用索引;
2、存在死锁的情况,从而导致select语句挂起;
3、返回不必要的列,如很多人喜欢在程序中使用select * from 这样会查询表或视图中的所有字段,如果表或视图的数量比较大时候,就会浪费系统资源,应该只要返回必要的列 ;
4、在select语句中使用where子句,限制返回的记录数 ;
5、使用TOP关键字,限制返回的记录数 ;
6、在使用like关键字的时候需要注意通配符的使用方法 ;
7、慎用union关键字,因为它会影响到查询的效率 ;
8、慎用Distinct关键字,因为在结果集中的重复记录并不会影响到查询的效率,相反则需要消耗相应的资源去过滤重复记录,除非必须如此,不要使用此关键字 ;
9、如果需要经常对表中的数据进行统计,可以在表中增加一个统计字段,每次表中的数据发生变化的时候,动态更新统计字段。这样,在查询统计结果时,就不需要临时对表中的数据进行统计计算了 ;
10、如果需要多次对一个数据量非常大的表中的一部分数据进行查询操作,可以将这部分数据保存到临时表中,然后对临时表进行查询操作,并且可以根据需要在临时表中增加索引 ;
11、在where子句中使用BETWEEN关键字比IN要快,因为IN关键字对其后面的集合中的每一个元素都进行比较,如果必须使用IN关键字,则可以将频繁使用的值放在集合的前面,从而减少比较的次数 ;
12、 尽量少使用视图,特别是嵌套视图,可以直接从表中获取数据。在开发中,有人为了方便,设计一个包含很多字段的大视图,这样无论查询什么字段都从此视图中 取。实际上,最好从表中直接获取数据,一面查询大视图而造成的系统的开销。建议用存储过程取代视图,从而提高执行效率 ;
13、如果不要排序,尽量不要使用order by语句,这也会增加开销 ;
14、不要在where语句中=的左侧使用函数火表达式,英文系统将无法应用函数或表达式中的索引 ;
15、当判断表中是否包含记录时,使用EXISTS关键字,而不要使用count统计表中所有的记录数数量 。