SQL性能优化

1-查询模糊匹配,少用like ‘%_%’。

a)修改前台程序,把查询条件的供应商名称一栏由文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就定位到具体供应商,后台调用程序时直接用“=”关联。

b)直接修改后台,根据输入的条件,先查出符合条件的供应商,把相关记录保存到一个临时表,再用临时表做复杂关联。


2-索引问题。

创建索引能加快查询速度

法则:不要在简历的索引的数据列上进行如下操作

a)避免对索引字段进行计算操作。

b)避免在索引字段上使用 not,<>,!=。

c)避免在索引列上使用IS NULL和IS NOT NULL。

d)避免在索引列上出现数据类型转换。

e)避免在索引字段上使用函数。

f)避免简历索引的列中使用空值。


3-复杂操作,拆分简单。

部分update、select语句写得很复杂(经常嵌套多子集查询)——可以考虑适当拆成几步,先生成一些临时数据表,再进行关联操作。


4-update(整合在一起)

同一个表的修改在一个过程里出现了好几十次。可以整合在一个update语句中完成。


5-在可以使用union all的语句里使用了union。

union:两个集合相加。字段排序,排重。

union all:两个集合相加。字段不排序,不排重。


6-在where语句种,避免对索引字段计算操作。


7-where中避免用in,not in,or,having,不要以字符格式声明数字,要以数字声明字符。(日期同样)否则会使索引无效,产生全表扫描。

in,not in用exist,not exist代替。

a)例子select * from orders where customer_name not in(select customer_name from customer);

优化select * from orders where customer_name not exist(select customer_name from customer);

b)使用select emp.ename, emp.job from emp where emp.empno=7369;

不要使用select emp.ename, emp.job from emp where emp.empno='7369';


8-对select语句的法则,少用select *。



9-排序,避免耗费资源。

distinct,union,minus,intersect,order by会启动SQL引擎,耗费资源的排序功能。

distinct需要一次排序,而其他的至少需要两次排序。


10-慎用临时表,可以提高性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值