sql 优化注意事项
来源:互联网 发布:淘宝老店铺 编辑:程序博客网 时间:2024/05/21 18:36
1.存储过程比sql语句效率高;存储过程经过预编译处理 而SQL查询没有
2.给表建立索引的字段(常见字段是where 后的条件字段)
3.查询表时使用(nolock)查询语句不会阻塞
4.不要使用 select * from dbo.table ,用具体的字段列表代替“*”,不要返回用不到的任何字段。同时避免使用count(*);
5.From最后面的表为基础表,一般要选择记录数最少的表作为基础表。
6.使用Truncate替代delete来删除记录,但Truncate数据不记录日志,无法进行回滚
7.观察数据的分布,然后把能最快降低数据集的where字段放到前面;假设STATUS=1能一下子把数据从1000万降到1万,那在where中,第一个出现的条件应该是STATUS=1
8.在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;
如果数据量不大,为了缓和系统表的资源,应先create table,然后insert。
9.使用确定的Schema
在使用表,存储过程,函数等等时,最好加上确定的Schema。这样可以直接找到对应目标,避免去计划缓存中搜索。
而且搜索会导致编译锁定,最终影响性能。比如select * from dbo.TestTable比select * from TestTable要好
10.用EXISTS替代IN、用NOT EXISTS替代NOT IN:
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接。在这种情况下,使用EXISTS(或NOT EXISTS)通常将提高查询的效率。
在子查询中,NOT IN子句将执行一个内部的排序和合并。
无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历)。
11.插入数据到临时表,尽量避免order by
2.给表建立索引的字段(常见字段是where 后的条件字段)
3.查询表时使用(nolock)查询语句不会阻塞
4.不要使用 select * from dbo.table ,用具体的字段列表代替“*”,不要返回用不到的任何字段。同时避免使用count(*);
5.From最后面的表为基础表,一般要选择记录数最少的表作为基础表。
6.使用Truncate替代delete来删除记录,但Truncate数据不记录日志,无法进行回滚
7.观察数据的分布,然后把能最快降低数据集的where字段放到前面;假设STATUS=1能一下子把数据从1000万降到1万,那在where中,第一个出现的条件应该是STATUS=1
8.在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;
如果数据量不大,为了缓和系统表的资源,应先create table,然后insert。
9.使用确定的Schema
在使用表,存储过程,函数等等时,最好加上确定的Schema。这样可以直接找到对应目标,避免去计划缓存中搜索。
而且搜索会导致编译锁定,最终影响性能。比如select * from dbo.TestTable比select * from TestTable要好
10.用EXISTS替代IN、用NOT EXISTS替代NOT IN:
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接。在这种情况下,使用EXISTS(或NOT EXISTS)通常将提高查询的效率。
在子查询中,NOT IN子句将执行一个内部的排序和合并。
无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历)。
11.插入数据到临时表,尽量避免order by
阅读全文
0 0
- Oracle Sql优化注意事项
- sql 优化 注意事项
- sql优化和注意事项
- sql优化注意事项
- SQL优化及注意事项
- sql 优化注意事项
- SQL优化-索引 (五)其他注意事项
- Hive优化----编写SQL时注意事项
- 关于SQL优化的一些注意事项
- Mybatis中SQL性能优化注意事项
- 【sql】总结sql数据库性能优化相关的注意事项
- SQL 数据库的优化性能注意事项(摘自CSDN论坛)
- 总结sql数据库性能优化相关的注意事项
- SQL注意事项
- SQL注意事项
- SQL注意事项
- SQL注意事项
- 安装SQL Server 数据库时注意事项及优化SQL Server 数据库服务器配置
- 搜狐集团2018秋季校招笔试题 kolakoski序列
- 二分查找
- Retrofit 2.2 传递数组参数
- python教程之二-----一个Python的非正式介绍
- squirrel-foundation状态机的使用细节
- sql 优化注意事项
- 静态链接的整个过程
- GCD中任务与队列(一)
- 简单斐波那契
- 单选,反选,全选
- 负载均衡基础知识
- 从ttf原始文件解析出字体名称时遇到的字节序的问题是big endian
- Android官方DataBinding(十一):对双向绑定之反向绑定的改进和简化
- python gutenberg古腾堡语料库