写SQL语句时,提高查询效率

僤鯓⒐⒋嵵緔 提交于 2020-01-20 21:26:46

写SQL语句性能的时要注意重要的一点:
不要用程序的开发思维去思考数据库
在数据库中,SQL语句是一个抽象的概念,而不是代表具体的实现。一个简单的例子,比如A表与B表做链接,具体的Loop Join实现逻辑的代码是

for each row in t1 matching range{
for each row in t2 matching reference key{
for each row in t3 {
if row satisfies join conditions,
send to client
	}
	}
}

而SQl语句仅需一句

select * from a inner join b on a.clo1=b.col2,

该SQL语句仅仅写了你希望获得的结果,而没有写任何实现逻辑,因此SQL是无关实现抽象的。
那么具体如何执行在关系数据库中都有一个所谓的“优化器”实现,现代关系数据库优化器是基于成本选择具体执行步骤的,因此妨碍优化器最优执行计划的SQL就是不是好SQL。

  1. 选择最有效率的表名顺序
  2. where子句中的连接顺序
  3. select子句避免使用‘*’
  4. 计算记录条数
  5. 使用表的别名(Alias
  6. 用where子句替换having子句
    应避免大量的表join会导致中间结果集不准确,从而限制优化器选择较好的执行计划
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!