在sql中如何提高除主键外其他列的查询效率
展开全部
1.select 语句 只返回需要字段,尽量不用要select * from table
2. where 条件先优先使用索引字段, 非必要时不要使用非索引字段
3 避免使用临时表(#temp),如需要,可考虑使用变量表(@table),使用临时表时,最后要删除掉(drop table #temp)。
4 避免使用游标(Cursors), 如需要,可考虑使用while 循环.
5 避免使用if else 来分隔大查询。
6 避免大查询嵌套大查询( in (select ….))
7.避免where 条件字段使用函数 ,如 convert(varchar(10), charge_date, 121) = '2010-10-10' 可以修改为 charge_date between '2010-10-10 00:00:00' and '2010-10-10 23:59:59'
8 .避免where 条件使用charindex, 可以使用in 或 <> (不等于)替换。
9.避免Where 条件使用charindex; or 等
10. 可以用 = (等于)的不要使用 like
11.Like 可以左模糊或右模糊的,不要使用同时左右模糊.
12.In 和 exists 使用 子查询数量级比主查询小时,使用in 反之使用 exists
13.尽量避免使用case when then end; group by; distinct; order by ; sum; max; min 等函数。
14.可用Union all 时不要使用 union
2. where 条件先优先使用索引字段, 非必要时不要使用非索引字段
3 避免使用临时表(#temp),如需要,可考虑使用变量表(@table),使用临时表时,最后要删除掉(drop table #temp)。
4 避免使用游标(Cursors), 如需要,可考虑使用while 循环.
5 避免使用if else 来分隔大查询。
6 避免大查询嵌套大查询( in (select ….))
7.避免where 条件字段使用函数 ,如 convert(varchar(10), charge_date, 121) = '2010-10-10' 可以修改为 charge_date between '2010-10-10 00:00:00' and '2010-10-10 23:59:59'
8 .避免where 条件使用charindex, 可以使用in 或 <> (不等于)替换。
9.避免Where 条件使用charindex; or 等
10. 可以用 = (等于)的不要使用 like
11.Like 可以左模糊或右模糊的,不要使用同时左右模糊.
12.In 和 exists 使用 子查询数量级比主查询小时,使用in 反之使用 exists
13.尽量避免使用case when then end; group by; distinct; order by ; sum; max; min 等函数。
14.可用Union all 时不要使用 union
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询