sql语句性能提高技巧

sql语句性能提高技巧

ID:8982756

大小:41.50 KB

页数:5页

时间:2018-04-14

sql语句性能提高技巧_第1页
sql语句性能提高技巧_第2页
sql语句性能提高技巧_第3页
sql语句性能提高技巧_第4页
sql语句性能提高技巧_第5页
资源描述:

《sql语句性能提高技巧》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、sql语句性能提高技巧1.合理使用索引索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。索引的使用要恰到好处,其使用原则如下:●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。●在频繁进行排序或分组(即进行groupby或orderby操作)的列上建立索引。●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重

2、降低更新速度。●如果待排序的列有多个,可以在这些列上建立复合索引(compoundindex)。●使用系统工具。如Informix数据库有一个tbcheck工具,可以在可疑的索引上进行检查。在一些数据库服务器上,索引可能失效或者因为频繁操作而使得读取效率降低,如果一个使用索引的查询不明不白地慢下来,可以试着用tbcheck工具检查索引的完整性,必要时进行修复。另外,当数据库表更新大量数据后,删除并重建索引可以提高查询速度。(1)在下面两条select语句中:  select*fromtable1 where field1<=10000andfield1>=0;  select

3、*fromtable1 where field1>=0andfield1<=10000;  如果数据表中的数据field1都>=0,则第一条select语句要比第二条select语句效率高的多,因为第二条select语句的第一个条件耗费了大量的系统资源。  第一个原则:在where子句中应把最具限制性的条件放在最前面。(2)在下面的select语句中:  select*fromtab where a=…andb=…andc=…; 若有索引index(a,b,c),则where子句中字段的顺序应和索引中字段顺序一致。  第二个原则:where子句中字段的顺序应和索引中字段顺序一

4、致。以下假设在field1上有唯一索引I1,在field2上有非唯一索引I2。(3)selectfield3,field4fromtbwherefield1='sdf'    快  select*fromtbwherefield1='sdf'   慢,因为后者在索引扫描后要多一步ROWID表访问。(4)selectfield3,field4fromtbwherefield1>='sdf'    快selectfield3,field4fromtbwherefield1>'sdf'    慢因为前者可以迅速定位索引。(5)selectfield3,field4fromtbwhe

5、refield2like'R%'  快  selectfield3,field4fromtbwherefield2like'%R'  慢,  因为后者不使用索引。(6)使用函数如:selectfield3,field4fromtbwhereupper(field2)='RMN'不使用索引。如果一个表有两万条记录,建议不使用函数;如果一个表有五万条以上记录,严格禁止使用函数!两万条记录以下没有限制。(7)空值不在索引中存储,所以  selectfield3,field4fromtbwherefield2is[not]null不使用索引。(8)不等式如  selectfield3

6、,field4fromtbwherefield2!='TOM'不使用索引。  相似地,  selectfield3,field4fromtbwherefield2notin('M','P')不使用索引。(9)多列索引,只有当查询中索引首列被用于条件时,索引才能被使用。(10) MAX,MIN等函数,如Selectmax(field2)fromtb使用索引。所以,如果需要对字段取max,min,sum等,应该加索引。一次只使用一个聚集函数,如:select“min”=min(field1),“max”=max(field1) fromtb   不如:select“min”=(s

7、electmin(field1)fromtb),“max”=(selectmax(field1)fromtb)  (11)重复值过多的索引不会被查询优化器使用。而且因为建了索引,修改该字段值时还要修改索引,所以更新该字段的操作比没有索引更慢。(12)索引值过大(如在一个char(40)的字段上建索引),会造成大量的I/O开销(甚至会超过表扫描的I/O开销)。因此,尽量使用整数索引。Sp_estspace可以计算表和索引的开销。(13)对于多列索引,orderby的顺序必须和索引的字段顺序一致。(14)在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。