查询设计建议:
1、在小的结果集上操作
a、限制选择列表中的列数。
b、用高选择的Where子句。
2、有效使用索引
a、避免不可参数化的搜索条件。(between vs In/Or、Like条件、!<条件 VS >=条件、)
b、避免where子句列上的算术运算符。c、避免where子句列上的函数 (Substring Vs Like 、日期比较)
3、避免优化器提示
a、连接提示(Option (Look join、Mergejoin、Hash Join))b、索引提示(With (index (PK_XXXX)))一般情况下,让优化器为查询选择最佳的索引策略,不要使用索引提示来忽略优化器的行为。
4、使用域或参照完整性
a、非空约束。(尽可能在数据库中排除Null值)b、声明完整性。用于定义父表与子表之前的参照完整性。
5、避免资源密集型号的查询
a、避免数据类型转换。b、使用Exists代替Count(*)难数据存在。c、使用Union All代替Union(Union会删除重复的结果集)d、为聚合和排序操作使用索引。e、避免在批查询中的局部变量f、小心地命名存储过程(不应该使有sp_来命名存储过程)
6、减少网络传输数量
a、同时执行多个查询b、使用Set nocount
7、减少事务开销
a、减少日志开销b、减少锁开销。(将数据库标为Read_Only、阻止select 语句请求锁(Nolock))