仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1099|回复: 9
打印 上一主题 下一主题

[学习教程] MSSQL编程:优化SQL语句必要注重的4点

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:15:37 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
恢复到之前的某个状态,是需要数据的。这数据可以是a)回滚步骤或者b)操作之前的数据状态原文。</p>1.只管不要对列名举行函数处置。而是针对前面的值举行处置
比方wherecol1=-5的效力比where-col1=5的效力要高
由于前面的前提对列值举行了盘算。如许的前提下优化器没法利用索引
而是要针对一切值举行盘算以后才干再对照
2.只管利用和数剧列一样的值举行操纵
假如col1是数值型
那末比方wherecol1=2和wherecol1=‘2&prime;
则前者效力更高
由于对照字符和数值型的时分
引擎必要把二者都转化成双精度然落后行对照
3.削减函数的利用
比方wherecol1>=‘2009-10-26&prime;andcol1<=‘2009-10-27&prime;
和wheredatediff(day,col1,getdate())=0
后者由于用到函数处置。以是col1上的索引又没法利用了
4.只管不要用OR
一样平常关于OR的前提
优化器一样平常会利用全表扫描
限制,如果WHERE子句的查询条件里有不等号(WHEREcoloum!=),MySQL将无法使用索引。类似地,如果WHERE子句的查询条件里使用了函数(WHEREDAY(column)=),MySQL也将无法使用索引。
只想知道 该用户已被删除
沙发
 楼主| 发表于 2015-3-24 08:07:58 | 显示全部楼层
分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-14 09:04

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表