sql性能优化的几种方式:
1.查询的模糊匹配:
尽量避免在一个复杂查询里面使用like '%parm%',前面的%会导致相关列的索引无法使用,最好不要用
直接修改后台,根据输入条件,先查出符合条件的供应商,并把相关的记录保存在一个临时表里面,然后在用临时表去做复杂关联
2.索引问题:
在做性能跟踪分析的时候,经常发现有不少的后台程序的问题是因为缺少合适的索引所造成的,有些表甚至一个索引都没有,这种情况往往都是因为设计表的时候,没去定义索引
3.复杂操作
部分update,select语句写的很复杂(经常嵌套多级子查询),可以考虑适当拆成几部,先生成一个临时数据表,在进行关联操作
4.uodate
同一个表的修改在一个过程里面出现好几十次,对于这类脚本其实可以整合在一个update语句来完成
5.在where语句中,尽量避免对索引字段进行计算操作
6.对where语句的优化,避免在where语句中使用in,not in,or后者having,可以使用exist和not exist代替in和not in
可以使用表链接代替exist,having可以用where来代替
例如:
select * from orders where name not in (select name from customer)
优化之后:
select * from orders where name not exist (select name from customer)
不要以字符格式什么数字,要以数字格式申明字符值,否则会使索引无效,产生全表索引
例子:
select name from emp where nid=122
不要使用select name from emp where nid='122'会产生全表扫描
7.对select语句的法则
在应用程序,包和过程中限制select * from table 这种方式
例子:
select nid ,name from emp where nid=12
不要使用select * from emp where nid=12
8.排序
避免使用耗费资源的操作,带有DISTINCE,UNION,MINUS,INTERSECT,ORDER BY的sql语句会启动sql引擎执行,耗费资源
的排序(sort)功能,DISTINCT需要执行一次排序操作,而其他的至少需要执行两次排序操作.
9.临时表
慎重使用临时表就可以极大的提高系统性能
10.OSI七层协议