欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

高效的sql语句解决方案

更新时间: 2014-01-05 02:30:57 责任编辑: Author_N1

 

高效的sql语句
小弟初来乍到做web开发,最近学习sql,如何能编写高效的sql呢,大侠们有什么好书推荐下呢……

--参考方法--
找本语法书,一个分析器,把各种你能想到的写法不停测试。
lecco sql export,这个自动工具有些帮助。
--参考方法--
少用!=(<>),尽量用=,尽量不要desc,尽量少用嵌套查询,表的设计尽量合理,尽量少用多表级联,尽量使用索引,尽量使用视图.................
--参考方法--
有时候嵌套查询的效率还是挺高的,至少比多表连要高。多表连接在很大数据量的时候会使性能急剧下降,这时候可以有嵌套查询来优化。具体还要自己多多总结。举一个例子
实体表:student(id,name) teacher(id,name)
联系表:s_t(sid,tid)
考虑下面的查询
select s.name
from student s,s_t
where s.id=s_t.sid and s_t.tid=1
如果改为
select s.name
from student s
where s.id in(select sid from s_t where s_t.tid=1)
情况会如何呢?
第一种查询先把两个表进行笛卡儿积,这时要进行处理的数据量会增加一个数量级,如果存在大量数据,性能就会急剧下降。
第二种查询先搜索一个表(s_t),得到的结果是一个小批量的数据(无论原数据量有多大),再用student表的每一个元组遍历这个小批量数据集,性能大大得到提升。
--参考方法--
有注意性能的书,下本来看。比如where后怎样放条件,哪些语句费时...
--参考方法--
打好基础,自己慢慢体会总结!

可以把自己的认为复杂SQL语句放到csdn上来,给别人看看!
--参考方法--
有时候嵌套查询的效率还是挺高的,至少比多表连要高。多表连接在很大数据量的时候会使性能急剧下降,这时候可以有嵌套查询来优化。具体还要自己多多总结。举一个例子 
实体表:student(id,name) teacher(id,name) 
联系表:s_t(sid,tid) 
考虑下面的查询 
select s.name 
from student s,s_t 
where s.id=s_t.sid and s_t.tid=1 
如果改为 
select s.name 
from student s 
where s.id in(select sid from s_t where s_t.tid=1) 
情况会如何呢? 
第一种查询先把两个表进行笛卡儿积,这时要进行处理的数据量会增加一个数量级,如果存在大量数据,性能就会急剧下降。 
第二种查询先搜索一个表(s_t),得到的结果是一个小批量的数据(无论原数据量有多大),再用student表的每一个元组遍历这个小批量数据集,性能大大得到提升。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:30:57
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/10792/
本文WWW.DOC100.NET DOC100.NET版权所有。