02 2011 档案
摘要:今天遇到这样一个细节问题,有个同事为了提高SQL执行效率使用sysindexes.rows来快速的计算表的行数结果发现取出来的行数根本就不是实际表中的行数就好比这样为了获得表中的记录数,一般都使用下面的SQL语句: SELECT COUNT(*) FROM dbo.orders但这条语句会执行全表扫描才能获得行数。 下面的SQL语句不会执行全表扫描一样可以获得行数:SELECT rows FROM sysindexes WHERE id = OBJECT_ID('表名') AND indid < 2网上很多优化文章都推荐这种做法,无可厚非,这种计算 sysindexes
阅读全文
摘要:通过总结,我发现自己以前很多很模糊的概念都清晰了很多。不论是缓存的数据信息,还是物理保存的信息,他们的基本单位都是数据页。所以理解数据页是最最基础的知识点,本篇博客就介绍跟索引有关的数据页的一些基础知识。数据页的基础知识SQL Server 中数据存储的基本单位是页(Page)。数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可以从逻辑上划分成页(从 0 到 n 连续编号)。磁盘 I/O 操作在页级执行。也就是说,SQL Server 每次读取或写入数据的最少数据单位是数据页。注意:日志文件不是用这种方式存储的,而是一系列日志记录。数据库被分成逻辑页面(每个页面8KB),并且在每个文
阅读全文
摘要:有件东西我观察了很多年,那就是很少有开发者会去使用SQL Server中的一个非常有用的东西——EXISTS结构。你可以在各种情况中用到EXISTS结构,在这篇文章中我会向大家介绍其中的一些。EXISTS结构语法EXISTSsubquery参数subquery:是一个受限的SELECT语句 (不允许有COMPUTE子句和INTO关键字)。有关更多信息,请参见SELECT中有关子查询的讨论。结果类型:Boolean结果值:如果子查询包含行,则返回 TRUE。exists(sql 返回结果集为真)notexists(sql 不返回结果集为真)如下:表AID NAME1 A1
阅读全文

浙公网安备 33010602011771号