摘要: 今天遇到这样一个细节问题,有个同事为了提高SQL执行效率使用sysindexes.rows来快速的计算表的行数结果发现取出来的行数根本就不是实际表中的行数就好比这样为了获得表中的记录数,一般都使用下面的SQL语句: SELECT COUNT(*) FROM dbo.orders但这条语句会执行全表扫描才能获得行数。 下面的SQL语句不会执行全表扫描一样可以获得行数:SELECT rows FROM sysindexes WHERE id = OBJECT_ID('表名') AND indid < 2网上很多优化文章都推荐这种做法,无可厚非,这种计算 sysindexes 阅读全文
posted @ 2011-06-09 16:24 qanholas 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 1、首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用“全表扫描”方式。 可见,执行计划并不是固定的,它是“个性化的”。产生一个正确的“执行计划”有两点很重要: (1) SQL语句是否清晰地告诉查询优化器它想干什么? (2) 查询优化器得到的数据库统计信息是否是最新的、正确的? 2、统一SQL语句的写法 对于以下两句SQL语句,程序员认 阅读全文
posted @ 2011-06-09 14:01 qanholas 阅读(558) 评论(0) 推荐(0) 编辑
摘要: 在SQL Server 2005下自带的函数HashBytes() ,此函数是微软在SQL Server 2005中提供的,可以用来计算一个字符串的MD5和SHA1值,使用方法如下:--获取123456的MD5加密串select hashbytes('MD5', '123456') ;--获取123456的SHA1加密串select hashbytes('SHA1', '123456') ;有了这个函数可以在SQL Server中为字符串进行加密,但是HashBytes() 函数的返回结果是VarBinary类型(以 0x 开头 阅读全文
posted @ 2011-06-09 13:52 qanholas 阅读(14849) 评论(1) 推荐(2) 编辑
点击右上角即可分享
微信分享提示