编写和优化SQL Server的存储过程(2)
来源:asp之家 时间:2009-04-13 10:13:00
索引的使用规范:
索引的创建要与应用结合考虑,建议大的OLTP表不要超过6个索引。
尽可能的使用索引字段作为查询条件,尤其是聚簇索引,必要时可以通过index index_name来强制指定索引
避免对大表查询时进行table scan,必要时考虑新建索引。
在使用索引字段作为条件时,如果该索引是联合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用。
要注意索引的维护,周期性重建索引,重新编译存储过程。
tempdb的使用规范:
尽量避免使用distinct、order by、group by、having、join、cumpute,因为这些语句会加重tempdb的负担。
避免频繁创建和删除临时表,减少系统表资源的消耗。
在新建临时表时,如果一次性插入数据量很大,那么可以使用select into代替create table,避免log,提高速度;如果数据量不大,为了缓和系统表的资源,建议先create table,然后insert。
如果临时表的数据量较大,需要建立索引,那么应该将创建临时表和建立索引的过程放在单独一个子存储过程中,这样才能保证系统能够很好的使用到该临时表的索引。
如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先truncate table,然后drop table,这样可以避免系统表的较长时间锁定。
慎用大的临时表与其他大表的连接查询和修改,减低系统表负担,因为这种操作会在一条语句中多次使用tempdb的系统表。
合理的算法使用:
根据上面已提到的SQL优化技术和ASE Tuning手册中的SQL优化内容,结合实际应用,采用多种算法进行比较,以获得消耗资源最少、效率最高的方法。具体可用ASE调优命令:set statistics io on, set statistics time on , set showplan on 等。
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python3实现获取图片文字里中文的方法分析
探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句
类型转换的小乐趣
Python数据可视化之环形图
![](https://img.aspxhome.com/file/2023/5/76905_0s.png)
Rs.Open参数说明
详解python logging日志传输
Python 数据类型中的字符串和数字
![](https://img.aspxhome.com/file/2023/7/117597_0s.png)
实例讲解MySQL数据库中文问题的解决方法
JS定义函数的几种常用方法小结
python爬虫入门教程--优雅的HTTP库requests(二)
《Python之禅》中对于Python编程过程中的一些建议
![](https://img.aspxhome.com/file/2023/3/72073_0s.jpg)
mysql 获取时间方式
![](https://img.aspxhome.com/file/2023/3/108893_0s.png)
详解如何在Apache中运行Python WSGI应用
Python基础之高级变量类型实例详解
![](https://img.aspxhome.com/file/2023/0/112010_0s.png)
PHP基于yii框架实现生成ICO图标
Python3操作MongoDB增册改查等方法详解
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
![](https://img.aspxhome.com/file/2023/3/93793_0s.jpg)
将imagenet2012数据为tensorflow的tfrecords格式并跑验证的详细过程
![](https://img.aspxhome.com/file/2023/9/120559_0s.png)
sql中的常用的字符串处理函数大全
Python搭建HTTP服务器和FTP服务器
![](https://img.aspxhome.com/file/2023/5/131405_0s.png)