Welcome 微信登录

首页 / 数据库 / SQLServer

SQL参数化查询的另一个理由 命中执行计划

SQL参数化查询的另一个理由 命中执行计划

1概述 SQL语言的本质就是一串伪代码,表达的是做什么,而不是怎么做的意思。如其它语言一样,SQL语句需要编译之后才能运行,所以每一条SQL是需要通过编译器解释才能运行的(在这之间还要做SQL的优化)。而这些步骤都是需要运行成本,所以在数据库中有一个叫做执行计划的东西,编译器会将编译过后的SQL存入执行计划当中,当遇到同样的SQL时,就直接调用执行计划来执行,而不需要再次编译。 通过对上面执行计划的认识,为了提高数据库运行的效率,我们需要尽可能的命中执行计...
SQL处理多级分类,查询结果呈树形结构

SQL处理多级分类,查询结果呈树形结构

这样处理的弊端是:如果数据量大,子分类很多,达到4级以上,这方法处理极端占用数据库连接池 对性能影响很大。 如果用SQL下面的CTE递归处理的话,一次性就能把结果给查询出来,而且性能很不错 比用程序处理(数据量很大的情况),临时表性能更好,更方便 复制代码 代码如下: with area as( select *,id px,cast(id as nvarchar(4000)) px2 from region where parentid=0 union ...
SQL Server 数据页缓冲区的内存瓶颈分析

SQL Server 数据页缓冲区的内存瓶颈分析

SQL Server会把经常使用到的数据缓存在内存里(就是数据页缓存),用以提高数据访问速度。因为磁盘访问速度远远低于内存,所以减少磁盘访问量同样是数据库优化的重要方面。 当数据页缓存区出现内存不足,则会出现查询慢,磁盘忙等等问题。 分析方法:主要是用到性能计数器。 查看如下性能计数器: 1. SQL SERVER:Buffer Manager-Lazy Writes/sec:内存不足则会频繁调用Lazy Writer把数数据写入磁盘,此值会经常不为0. ...
SqlServer 索引自动优化工具

SqlServer 索引自动优化工具

鉴于人手严重不足(当时算两个半人的资源),打消了逐个库手动去改的念头。当前的程序结构不允许搞革命的做法,只能搞搞改良,所以准备搞个自动化工具去处理。原型刚开发完,开会的时候以拿出来就遭到运维DBA团队强烈抵制,具体原因不详。最后无限延期。这里把思路分享下。欢迎拍砖。 整个思路是这样的,索引都是为查询和更新服务的,但是不合适的索引又会对插入和更新带来负面影响。面对表上现有的索引想识别那些是有效的不太可能。那么根据现有的数据使用情况重建所有的新索引不就解决...
优化 SQL Server 索引的小技巧

优化 SQL Server 索引的小技巧

在本文中,我将说明如何用SQL Server的工具来优化数据库索引的使用,本文还涉及到有关索引的一般性知识。 关于索引的常识 影响到数据库性能的最大因素就是索引。由于该问题的复杂性,我只可能简单的谈谈这个问题,不过关于这方面的问题,目前有好几本不错的书籍可供你参阅。我在这里只讨论两种SQL Server索引,即clustered索引和nonclustered索引。当考察建立什么类型的索引时,你应当考虑数据类型和保存这些数据的column...
Sql Server 2012 分页方法分析(offset and fetch)

Sql Server 2012 分页方法分析(offset and fetch)

其中 offset and fetch 最重要的新特性是 用来 分页,既然要分析 分页,就肯定要和之前的分页方式来比较了,特别是 Row_Number() 了,在比较过程中,发现了蛮多,不过最重要的,通过比较本质,得出了优劣,也和大家一起分享下。 准备工作,建立测试表:Article_Detail,主要是用来存放一些文章信息,测试的时间,都是从网易上面转载的新闻,同时,测试表数据字段类型是比较均匀的,为了更好的测试,表结构如下图: 内容:数据量:129,...
sqlserver 触发器学习(实现自动编号)

sqlserver 触发器学习(实现自动编号)

总结常用基本点如下: 1、触发器有两种类型:数据定义语言触发器(DDL触发器)和数据操纵语言触发器(DML触发器)。 DDL触发器:在用户对数据库执行数据定义(CREATE、ALTER、DROP或相似的语句)对数据库结构进行修改时激活而做出响应。 DML触发器:在用户对数据库执行数据操作时发生,触发器中的代码会被自动调用。 2、DML触发器分类:Insert触发器、Delete触发器、Update触发器、上面任意类型混合。 3、触发器创建语法: 复...
SQL Server 总结复习(一)

SQL Server 总结复习(一)

1. TVP, 表变量,临时表,CTE 的区别 TVP和临时表都是可以索引的,总是存在tempdb中,会增加系统数据库开销,而表变量和CTE只有在内存溢出时才会被写入tempdb中。对于数据量大,并且反复使用,反复进行查询关联的,建议使用临时表或TVP,数据量小,使用表变量或CTE比较合适 2. sql_variant 万能类型 可以存放所有数据类型,相当于C#中的object数据类型 3. datetime, datetime2, datetimeoff...
巧妙的自关联运用

巧妙的自关联运用

第一列按照goodsid局部分组,然后在分组后的记录中按照audittime升序排序得到序号,从而显示某商品得第几次变迁。 第二列是取该商品的最后变迁价格newPrice,然后将该值赋到这个商品的其他行中,例如对于goodsid为1的,最后一个newprice为20,那么对于所有goodsid为1的记录curprice都写为20,从而达到外面控件分布的效果。 如下,比较正常的数据记录: 需要增加特殊的两列效果为:以前的做法是在C#服务端将正常记录取出来(先...
SQL 查询性能优化 解决书签查找

SQL 查询性能优化 解决书签查找

先来看看什么是书签查找: 当优化器所选择的非聚簇索引只包含查询请求的一部分字段时,就需要一个查找(lookup)来检索其他字段来满足请求。对一个有聚簇索引的表来说是一个键查找(key lookup),对一个堆表来说是一个RID查找(RID lookup)。这种查找即是——书签查找。 书签查找根据索引的行定位器从表中读取数据。因此,除了索引页面的逻辑读取外,还需要数据页面的逻辑读取。 从索引的行定位器到从表中读取数据这之间会产生一些额外的开销,...
SQL Server 数据库备份和还原认识和总结 (一)

SQL Server 数据库备份和还原认识和总结 (一)

可能许多同学对SQL Server的备份和还原有一些了解,也可能经常使用备份和还原功能,我相信除DBA之外我们大部分开发员队伍对备份和还原只使用最基础的功能,对它也只有一个大概的认识,如果对它有更深入的认识,了解它更全面的功能岂不是更好,到用时会得心应手。因为经常有中小型客户公司管理人员对数据库不了解或掌握不牢,会请我们技术人员出马找回丢失的数据或硬件损坏移动数据的现象,或其它情况的发生。 首先从数据库【恢复模式】说起,因为数据库如果恢复模式设置不正确,会...
SQL Server 数据库备份和还原认识和总结(二)

SQL Server 数据库备份和还原认识和总结(二)

通过《SQL Server 数据库备份和还原认识和总结(一)》,相信您对数据备份和还原有了一个更深入的认识,在上文中我没有对事务日志做剖析,在此推荐宋沄剑的文章,对事务日志做了比较详细的讲解:http://www.jb51.net/article/31038.htm。本文将针对上文继续进行数据备份和还原讲解,主要讲解备份和还原的一些关键选项。 数据库备份选项 备份数据库时,有几个备份选项需要了解一下,覆盖介质、事务日志等。谈到覆盖介质时,必须先对这个概念有...
SQL Server自动更新统计信息的基本算法

SQL Server自动更新统计信息的基本算法

自动更新统计信息的基本算法是: · 如果表格是在 tempdb 数据库表的基数是小于 6,自动更新到表的每个六个修改。 · 如果表的基数是大于 6,但小于或等于 500,更新状态每 500 的修改。 · 如果基数大于 500,表为更新统计信息时(500 + 20%的表)发生了更改。 · 表变量为基数的更改不会触发自动更新统计信息。 注意:此严格意义上讲,SQL Server 计算基数为表中的行数。 注意:除了基数,该谓语的选择性也会影响 AutoStats...
学会sql数据库关系图(Petshop)

学会sql数据库关系图(Petshop)

很久以前就知道微软的Petshop的很经典,昨天抽出时间去学习,一开始还真的不适应,什么成员资格,还真的看不太懂,运行petshop想从登陆学起,但是用户名和密码都不知道,后来发现有更注册的页面,自己注册了一个页面,才发现还得从数据库出发。花了这么多时间最终还是回到了数据库,但是数据库中一张一张的表格找不到脚本,也不是自己设计的数据库,完全没有一点头绪,后来突然想起来sql有个数据库关系图,可以很快的适合数据库程序员很快的掌握数据库表之间的关系。于是开始了...
<< 271 272 273 274 275 276 277 278 279 280 >>