代码改变世界

SQL Server 查询性能优化——覆盖索引(二)

2013-12-24 15:47 by 渔者, 333 阅读, 0 推荐, 收藏, 编辑
摘要:在SQLServer查询性能优化——覆盖索引(一)中讲了覆盖索引的一些理论。 本文将具体讲一下使用不同索引对查询性能的影响。 下面通过实例,来查看不同的索引结构,如聚集索引、非聚集索引、组合索引等来查看相同的SQL语句查询的不同性能例一:没有任何索引的查询访问 1.表的碎片情况: 2.SQL查询语句与查询执行计划成本--要求返回IO统计,也就是数据页访问的数量SET STATISTICS IO ON--没有任何索引情况下的数据页访问数量SELECT [WBOOK_NO] ,[COP_G_NO] ,[G_NO] ,[CODE_T] ... 阅读全文

SQL Server 查询性能优化——覆盖索引(一)

2013-12-24 15:46 by 渔者, 272 阅读, 0 推荐, 收藏, 编辑
摘要:覆盖索引又可以称为索引覆盖。 解释一:就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。 解释二:索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引。 解释三:是非聚集组合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列(即建立索引的字段正好是覆盖查询语句[select子句]与查询条件[Where子句]中所涉及的字段,也即,索引包含了查询正在查找的所有数据)。首先,从聚集索引说起,... 阅读全文

SQL Server 查询性能优化——堆表、碎片与索引(二)

2013-12-24 15:43 by 渔者, 219 阅读, 0 推荐, 收藏, 编辑
摘要:本文是对SQLServer查询性能优化——堆表、碎片与索引(一)的一些总结。第一:先对SQLServer查询性能优化——堆表、碎片与索引(一)中的例一的SETSTATISTICSIO之后出现的关键信息如下表'T_EPZ_INOUT_ENTRY_DETAIL'。扫描计数1,逻辑读4825次,物理读6次,预读19672次。这句解释一下。(有些内容来自网络,有些内部是自己的理解。)SQLSERVER数据库引擎当遇到一个查询语句时,SQLSERVER数据库引擎会分别生成执行计划(占用CPU和内存资源),同时存储引擎读取IAM以生成必须要读取的磁盘地址排序列表。这使SQLServer得以 阅读全文

SQL Server 查询性能优化——堆表、碎片与索引(一)

2013-12-24 15:42 by 渔者, 504 阅读, 0 推荐, 收藏, 编辑
摘要:SQLServer在堆表中查询数据时,是不知道到底有多少数据行符合你所指定的查找条件,它将根据指定的查询条件把数据表的全部数据都查找一遍。如果有可采用的索引,SQLServer只需要在索引层级查找每个索引分页的数据,再抓出所需要的少量数据分页即可。访问数据表内数以万计的数据分页与只访问少数索引的分页两者间的差异,让索引变成效能调校的最佳工具。堆表的结果示意图:堆表内的数据页和行没有任何特定的顺序,也不链接在一起。数据页之间唯一的逻辑连接是记录在IAM页内的信息。假设订单明细表中有100万条数据,需要查询某个订单的明细数据,如下:select*fromT_EPZ_INOUT_ENTRY_DET. 阅读全文

ASP.NET導出Excel報表(不用考慮Excel版本)

2013-04-15 16:05 by 渔者, 224 阅读, 0 推荐, 收藏, 编辑
摘要:ASP.NET中導出Excel,不需要考慮Excel版本; 動態創建gridview,動態抓取datatable,動態綁定后,導出excel; 阅读全文

C#读取二进制文件并保存16进制字符串

2013-03-21 14:06 by 渔者, 1582 阅读, 0 推荐, 收藏, 编辑
摘要:private static readonly int CHUNK_ALL_SIZE = 308; //总的区间长度private static readonly int CHUNK_DATA_SIZE = 288; //Key数据长度private static readonly int CHUNK_CHECKSUM_SIZE = 20; //Key的CheckSum长度private void btnSaveDB_Click(object sender, EventArgs e){ try { this.Cursor = Cursors.AppStarting; //秒表统计运行时间 St 阅读全文

VB内存拷贝方式读取二进制文件(二进制数据转换为16进制字符串)

2013-03-21 13:51 by 渔者, 1243 阅读, 0 推荐, 收藏, 编辑
摘要:使用CopyMemory的API函数,内存拷贝。Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (Destination As Any, Source As Any, ByVal Length As Long)VB代码Sample如下:功能描述:VB通过调用C++接口读取二进制文件,按照约定格式按序读取Data,读出的二进制内容转换成字符串(16进制格式字符串);Option Explicit'''''''& 阅读全文

C#读写文件总结

2013-03-21 11:11 by 渔者, 216 阅读, 0 推荐, 收藏, 编辑
摘要:1、使用FileStream读写文件文件头:[csharp] view plaincopyprint?using System;using System.Collections.Generic;using System.Text;using System.IO;using System;using System.Collections.Generic;using System.Text;using System.IO;读文件核心代码:[csharp] view plaincopyprint?byte[] byData = new byte[100];char[] charData = new 阅读全文

C#计算代码执行时间

2013-03-21 11:09 by 渔者, 2445 阅读, 0 推荐, 收藏, 编辑
摘要:在一些测试工作时我们需要获得高精度的代码执行时间以比较其效率。最近遇到一个模块其执行时间非常短,但是调用频率非常高。精确计算其运算时间对于提高程序整体效率来说非常重要。 在我刚刚接触.Net时,也曾经想要测试一下自己写的程序的运行时间,当时我使用的是将两个DateTime.Now相减的笨方法,呵呵。后来知道使用Environment.TickCount,对于一般的测试来说就足够了。但是它对于高精度测试就没什么办法,经常是返回个0了事。对于高精度测试我们应当使用QueryPerformanceFrequency函数和QueryPerformanceCounter函数。通过它们可以获得比... 阅读全文

SQL语句执行效率及分析(轉)

2012-09-10 14:34 by 渔者, 534 阅读, 0 推荐, 收藏, 编辑
摘要:1.关于SQL查询效率,100w数据,查询只要1秒,与您分享:机器情况p4: 2.4内存: 1 Gos: windows 2003数据库: ms sql server 2000目的: 查询性能测试,比较两种查询的性能SQL查询效率 step by step-- setp 1.-- 建表create table t_userinfo(userid int identity(1,1) primary key nonclustered,nick varchar(50) not null default '',classid int not null default 0,writeti 阅读全文