当前位置: 代码迷 >> 高性能数据库开发 >> 高效的sql语句解决方案
  详细解决方案

高效的sql语句解决方案

热度:6677   发布时间:2013-02-26 00:00:00.0
高效的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表的每一个元组遍历这个小批量数据集,性能大大得到提升。
  相关解决方案