SqlServer数据库
文章平均质量分 61
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
SQL Server海量数据如何提高查询效率几点建议
0.索引1.当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法。不幸的是,这是一个非常低效的方法。 实际上,在解析的过程中, 会将‘*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间。2.增加内存、另外硬盘的读写速度如何?这都是影响查询效率因素。如果磁盘读写速度比较慢的话原创 2016-06-16 21:54:49 · 5853 阅读 · 0 评论 -
JSONDB使用
如图:结果如图:原创 2016-06-23 10:57:29 · 1756 阅读 · 0 评论 -
SqlServer与MongoDB结合使用NHibernate
Program.cs代码内容: class Program { private const string SqlServerConnectionString = @"Data Source=.;Initial Catalog=SqlWithMongo;Persist Security Info=True;User ID=sa;Password=原创 2016-08-01 14:56:32 · 2586 阅读 · 1 评论 -
Mysql,Oracle,SqlServer三大数据库【关键字一览表】
为了避免在数据库表结构设计过程中使用系统保留关键字我们必须知道数据库存在哪些关键字,接下来会列出mysql、oracle、sqlserver三个数据库各自的保留关键字。SQLServer下表列出了 SQL Server 保留关键字。 add EXTERNAL PROCEDURE ALL FETCH PUBLIC ALTER FILE RAISERROR And转载 2017-03-08 10:26:06 · 4789 阅读 · 0 评论 -
SQL对时间处理的语句小结
–获取当前时间Select getdate()–获取当前年月日 YY代表年,MM代表月,DD代表日,hh代表时,ss代表秒 /* year yy 1753–9999 quarter qq 1–4 month mm 1–12 day of year dy 1–366day dd 1–31 week wk 1–53 weekday dw 1–7(Sunday–Saturday)hour hh 0–2转载 2017-03-08 14:14:04 · 1084 阅读 · 0 评论 -
SQL集合函数中case when then 使用技巧
那么在集合函数中它有什么用呢 ? 假设数据库有一张表名为student的表。 如果现在要你根据这张表,查出江西省男女个数,广东省男生个数,浙江省男女个数 怎么写SQL语句?即要生成下结果表 答案是: SELECT sex, Count (CASE province WHEN '广东省' THEN '广东省' EN转载 2017-03-08 15:02:36 · 3628 阅读 · 0 评论 -
mssql高效的分页存储过程
最近在做一个几百万条数据的分页查询,研究了各种方案,在本机上用项目的实际数据库做测试,测试过程 is very 痛苦,不堪回首ing。现在废话不多说,直接上结果,相信这也是大多数搜索答案的人最愿意看的方式。 CREATE PROCEDURE [dbo].[P_gridviewpager] (@recordTotal INT output,转载 2017-03-08 15:29:25 · 577 阅读 · 0 评论 -
大数据量分页存储过程效率测试
我首先写了五个常用存储过程:1,利用select top 和select not in进行分页,具体代码如下: CREATE PROCEDURE Proc_paged_with_notin --利用select top and select not in(@pageIndex INT,--页索引 @pageSize INT --每页记录数)AS BEGIN SET noco转载 2017-03-08 15:46:32 · 1857 阅读 · 0 评论 -
SQL Server时间算法总结
DECLARE @Date DATETIME SET @Date=GETDATE() --前一天,给定日期的前一天 SELECT DATEADD(DAY,-1,@Date) AS '前一天' --后一天,给定日期的后一天 SELECT DATEADD(DAY,1,@Date) AS '后一天' GO --月初,计算给定日期所在月的第一天 --这个计算的技巧是先计算当前日期到“19转载 2017-03-09 23:05:53 · 656 阅读 · 0 评论 -
SqlServer存储过程分页代码(支持亿万庞大数据量)
Sql语句如下USE [Test]goSET ansi_nulls ONgoSET quoted_identifier ONgoALTER PROCEDURE [dbo].[Page] @tblName VARCHAR(255),-- 表名 @strGetFields VARCHAR(1000) = '*', -- 需要返回的列转载 2017-03-07 16:11:06 · 577 阅读 · 0 评论 -
大数据量,海量数据处理方法总结
大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯这样的一些涉及到海量数据的公司经常会问到。下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。 1.Bloom fil转载 2017-03-07 16:34:47 · 3334 阅读 · 0 评论 -
大数据量高并发的数据库优化详解
如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的。一、数据库结构的设计在一个系统分析、设计阶段,因为数据量较小,负荷较低。我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人转载 2017-03-07 17:03:22 · 882 阅读 · 0 评论 -
SqlServer表与表之间字段一对多sql语句写法
表A A1 A2 A3 A4 01 02 03 04 03 04 01 02B表 B1 B2 01 张三 02 李四 03 王五 04 赵六显示结果 A1 A2 A3 A4 张三 李四 王五 赵六 王五 赵六 张三 李四sql语句SELECT (SELECT B2转载 2017-03-07 22:56:55 · 713 阅读 · 0 评论 -
那些字段适不适合建索引?
数据库建立索引常用的规则如下:1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; 5、索引应该建在选择性高的字段上; 6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引; 7、复合索引的建立需要进行仔细分析;尽量考虑转载 2017-04-07 16:39:18 · 25240 阅读 · 1 评论 -
sys.dm_tran_locks
返回有关当前活动的锁管理器资源的信息。向锁管理器发出的已授予锁或正等待授予锁的每个当前活动请求分别对应一行。 列名 数据类型 说明 resource_type nvarchar(60) 表示资源类型。该值可以是下列值之一:DATABASE、FILE、OBJECT、PAGE、KEY、EXTENT、RID、APPLICATION、METADATA、HOBT 或 ALLOCATION转载 2017-03-13 13:50:42 · 1965 阅读 · 0 评论 -
SQL删除重复数据只保留一条
用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) >转载 2017-04-14 23:52:55 · 3083 阅读 · 0 评论 -
SqlServer性能优化用SQL(一)【锁监控】
Sql脚本:--查看锁住的表select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type='OBJECT'--哪个会话引起阻塞并且它们在运行什么 SELECT DTL.[request_s转载 2017-06-17 22:46:12 · 1302 阅读 · 0 评论 -
SqlServer性能优化用SQL(二)【索引监控】
SQL脚本:-- 未被使用的索引SELECT OBJECT_NAME(i.[object_id]) AS [Table Name] , i.nameFROM sys.indexes AS i INNER JOIN sys.objects AS o ON i.[object_id] = o.[object_id]WHERE i.index_id NO转载 2017-06-17 22:50:00 · 1018 阅读 · 0 评论 -
SqlServer性能优化用SQL(三)【数据库环境监控】
SQL脚本:--查询当前数据库的配置信息Select configuration_id ConfigurationId,name Name,description Description,Cast(value as int) value,Cast(minimum as int) Minimum,Cast(maximum as int) Maximum,Cast(value_in_use转载 2017-06-17 22:54:19 · 854 阅读 · 0 评论 -
SqlServer性能优化用SQL(四)【执行次数和性能监控】
SQL脚本--查询CPU最高的10条SQLSELECT TOP 10 TEXT AS 'SQL Statement' ,last_execution_time AS 'Last Execution Time' ,(total_logical_reads + total_physical_reads + total_logical_writes) / execution_count转载 2017-06-17 22:56:27 · 2079 阅读 · 0 评论 -
SqlServer中STUFF用法
1、作用删除指定长度的字符,并在指定的起点处插入另一组字符。2、语法STUFF ( character_expression , start , length ,character_expression )3、示例以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串SELECT STUFF(‘abcde转载 2017-03-08 13:34:04 · 2471 阅读 · 0 评论 -
MSSQL实用脚本
备份所有指定的MSSQL数据库DECLARE @name VARCHAR(50) -- 数据库名DECLARE @path VARCHAR(256) -- 备份文件路径DECLARE @fileName VARCHAR(256) -- 备份文件名 DECLARE @fileDate VARCHAR(20) -- 用来做文件名的SET @path = 'D:\backup\'SELECT转载 2017-06-07 22:15:28 · 818 阅读 · 0 评论 -
数据库sql实用脚本
Mysql数据表自连接查询FROM子句中无法指定目标表更新UPDATE user_accounts a INNER JOIN user_accounts b ON a.id = b.idSET a.status = 0WHERE b.update_at <= DATE_ADD(NOW(), INTERVAL -2 DAY)触发器before执行Can’t update table in转载 2017-06-22 13:57:26 · 807 阅读 · 0 评论 -
SQLServer创建索引的5种方法
前期准备:create table Employee ( ID int not null primary key, Name nvarchar(4), Credit_Card_ID varbinary(max)); --- 小心这种数据类型。go说明:本表上的索引,都会在创建下一个索引前删除。创建聚集索引方法 1、ALTER转载 2017-06-27 21:16:02 · 59701 阅读 · 1 评论 -
SQLServer创建索引
什么是索引拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K 。为了加快查找的速度,汉语字(词)典一般都有按拼音、笔画、偏旁部首等排序的目录(索引),我们可以选择按拼音或笔画查找方式,快速查找到需要的字(词)。同理,SQL Server允许用户在表中创建索引,指定按某列预先排序,从而大大提高查询速度。SQL Ser转载 2017-06-28 11:25:58 · 1012 阅读 · 0 评论 -
如何识别SQL Server中的IO瓶颈
问题:我们可能经常会遇到SQLServer数据库频繁关闭的情况。在分析了内存和CPU使用情况后,我们需要继续调查根源是否在I/O。我们应该如何识别SQLServer是否有I/O相关的瓶颈?解决:当数据页经常从缓冲池中移进移出的时候,I/O子系统就会成为SQLServer性能问题的关键因素之一。事务日志和tempdb同样也会产生重大的I/O压力。因此,你必须确保你的I/O子系统能按照预期运行。否则你将转载 2017-08-11 16:25:20 · 4173 阅读 · 0 评论 -
一个将Access数据库转成Mssql数据库的简单工具
frmMain.cspublic partial class frmMain : Form { private Thread TransferWorkerThread = null; public frmMain() { InitializeComponent(); } private voi原创 2017-07-28 10:01:25 · 1932 阅读 · 0 评论 -
SQL Server 性能调优3 之索引(Index)的维护
前言前一篇的文章介绍了通过建立索引来提高数据库的查询性能,这其实只是个开始。后续如果缺少适当的维护,你先前建立的索引甚至会成为拖累,成为数据库性能的下降的帮凶。查找碎片消除碎片可能是索引维护最常规的任务,微软官方给出的建议是当碎片等级为 5% - 30% 之间时采用 REORGANIZE 来“重整”索引,如果达到 30% 以上则使用 REBUILD 来“重建”索引。决定采用何种手段和操作时机可能需要转载 2017-10-13 16:45:43 · 1037 阅读 · 1 评论 -
SQL Server 性能调优4 之书写高效的查询
限制查询的行和列来提高性能这条规则非常简单,这里就不细说了。使用搜索可参数化判断(sargable conditions)来提高性能Sargable 由 Search ARGument Able 简写而来,字面意思是搜索可参数化?还是比较晦涩哎…总之使用Sargable判断可以帮助查询优化器更有效地利用索引,并提高采用 index seek 的可能性,我们先把所有的操作符分一下组。Sargable操转载 2017-10-13 16:46:24 · 580 阅读 · 2 评论 -
教你如何看懂SQL Server查询计划
对于SqlServer的优化来说,可能优化查询是很常见的事情。关于数据库的优化,本身也是一个涉及面比较的广的话题,本文只谈优化查询时如何看懂SqlServer查询计划。由于我对SqlServer的认识有限,如有错误,也恳请您在发现后及时批评指正。首先,打开【SQL Server Management Studio】,输入一个查询语句看看SqlServer是如何显示查询计划的吧。 说明:本文所演示的转载 2017-10-13 11:38:38 · 1336 阅读 · 1 评论 -
SqlSever查询开销
尽管查询的执行计划提供了详细的处理策略的单独步骤涉及的估计相对开销,但是它没有提供查询实际的CPU使用、磁盘读写或持续时间等开销。还有其他比运行Profiler更直接手机性能数据的方法一、客户统计 客户统计将计算机作为服务器的一个客户端,从这个角度出发去捕捉执行信息。这意味着任何记录事件包括通过网络传送数据的时间,而不仅仅是SQL Server本身所花费的时间。 要使用客户统计,只需要单击=》查转载 2017-10-11 13:55:26 · 2843 阅读 · 1 评论 -
SqlServer学习(四)【复杂语句】
删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最大的记录delete from [dbo].[WList]where [Cphone] in (select [Cphone] from [WList] group by [Cphone] having count([Cphone]) > 1)AND ID NOT in(SELECT Max(ID)FR原创 2017-09-15 11:48:34 · 1675 阅读 · 0 评论 -
SQLServer索引的四个高级特性
一、Index Building Filter(索引创建时过滤)有一些索引非常低效的,比如经常查询状态为进行中的订单,订单有99%的状态是完成,1%是进行中 ,因此我们在订单状态字段上建了一个索引,性能是提高了,但是感觉索引中保存了99%的完成状态数据是永远不会查询到的,很浪费空间。如果我们的索引在建立的时间就不保存完成状态的数据,那不是更好。 Index Building Filter就是用来解决转载 2017-10-13 10:22:14 · 826 阅读 · 1 评论 -
表提示(Transact-SQL)
通过指定锁定方法、一个或多个索引、查询处理操作(如表扫描或索引查找)或其他选项,表提示可在数据操作语言 (DML) 语句执行期间覆盖查询优化器的默认行为。表提示在 DML 语句的 FROM 子句中指定,仅影响在该子句中引用的表或视图。 由于 SQL Server 查询优化器通常会为查询选择最佳执行计划,因此我们建议仅在最后迫不得已的情况下才可由资深的开发人员和数据库管理员使用提示。适用范围:转载 2017-10-13 10:33:31 · 708 阅读 · 1 评论 -
SQL Server的复合索引学习
概要什么是单一索引,什么又是复合索引呢? 何时新建复合索引,复合索引又需要注意些什么呢?本篇文章主要是对网上一些讨论的总结。一.概念单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上。用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。复合索引的创建方法与创建单一索引的方法完全一样。但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引。当表的行数远远大于索引键的数目时转载 2017-10-11 16:26:05 · 2303 阅读 · 1 评论 -
SQL Server 性能调优 之执行计划(Execution Plan)调优
执行计划中的三种 Join 策略SQL Server 存在三种 Join 策略:Hash Join,Merge Join,Nested Loop Join。Hash Join:用来处理没有排过序/没有索引的数据,它在内存中把 Join 两边数据(的关联key)分别建立一个哈希表。例如有以下的查询语句,关联的两张表没有建立索引,执行计划将显示为Hash Join。 SELECT转载 2017-10-13 16:43:57 · 2692 阅读 · 1 评论 -
SQL Server 性能调优2 之索引(Index)的建立
前言索引是关系数据库中最重要的对象之一,他能显著减少磁盘I/O及逻辑读取的消耗,并以此来提升 SELECT 语句的查找性能。但它是一把双刃剑,使用不当反而会影响性能:他需要额外的空间来存放这些索引信息,并且当数据更新时需要一些额外开销来保持索引的同步。形象的来说索引就像字典里的目录,你要查找某一个字的时候可以根据它的比划/拼音先在目录中找到对应的页码范围,然后在该范围中找到这个字。如果没有这个目录(转载 2017-10-13 16:45:07 · 670 阅读 · 1 评论 -
聚集索引和非聚集索引
聚集索引一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。 聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以转载 2017-12-28 21:48:40 · 327 阅读 · 0 评论 -
SQL 高效分页(百万条数据)
ROW_NUMBER() OVER (ORDER BY id) | 分页 SELECT TOP 页大小 * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1 ) as A WHERE RowNum转载 2018-01-11 19:36:36 · 1472 阅读 · 1 评论 -
SQLServer单列索引和多列索引的不同
一、索引的概念索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准,而采用索引来加快数据处理速度通常是最普遍采用的优化方法。索引是什么:数据库中的索引类似于一本书的目录,在一本书中使用目录可以快速找到你想要的信息,而不需要读完全书。在数据库中,数据库程序使用索引可以重啊到表中的数据,而不必扫描整个表。书中的目录是一个字词以及各字词所在的页码列表,数据库中的索引是表中的值以及各值存储位置的转载 2018-01-02 16:21:39 · 2820 阅读 · 0 评论