SQL优化
albert528108
十年以上C#.NET开发,熟悉MES系统
展开
-
SQLServer中比较末尾带有空格的字符串遇到的坑
最近发现SQLServer中比较字符串的时候 如果字符串末尾是空格 那么SQLServer会无视那些空格直接进行比较 这和程序中平时的字符串判断逻辑不统一declare @a nvarchar(50);set @a=N'happycat1988' declare @b nvarchar(50);set @b=N'happycat1988 ' if(@a = @b) se...转载 2019-11-13 14:24:25 · 296 阅读 · 0 评论 -
SQL连接池
在程序中对数据库增加内容,小批的数据完成可以实现。但是大量数据就会提示连接池已满。检查了程序,发现是循环中插入数据太多,导致打开了过的的sqlconnection 虽然都关闭了但是还是会提示连接池满。asp.net 连接池2007-06-21 14:51数据库链接是一种危险的、昂贵的、有限的资源,特别是在多层Web应用程序中。你必须正确管理你的链接,因为你的方法将极大的影响应用程序转载 2013-09-04 15:59:33 · 676 阅读 · 0 评论 -
索引2
(三)结合实际,谈索引使用的误区 理论的目的是应用。虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析。下面我们将根据在实践中遇到的实际问题来谈一下索引使用的误区,以便于大家掌握索引建立的方法。 1、主键就是聚集索引 这种想法笔者认为是极端错误的,是对聚集索引的一种浪费。虽然SQL SERVER默认是在主键翻译 2013-09-06 12:10:30 · 584 阅读 · 0 评论 -
索引3
二、改善SQL语句 很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如:select * from table1 where name='zhangsan' and tID > 10000和执行: select * from table1 where tID > 10000 and name='zhangsan翻译 2013-09-10 16:00:54 · 562 阅读 · 0 评论 -
SQL Server查询优化器:最佳执行计划
我们知道,查询优化器的基本的目标就是为我们的查询语句找出一个比较高效的执行计划。即使是一个非常简单的查询,也会存在很多的不同方式去访问数据,而这些不同的方式都是可以得到相同的结果的,所以,查询优化器必须要很“明智的”从这些大量的执行计划中找出了一个“最佳”的出来。 前一篇:浅析SQL Server查询优化器的工作原理 为了得到最好的计划,查询优化器必须在某些条件的限制下,尽可能多的创建翻译 2013-09-11 09:42:58 · 1158 阅读 · 0 评论 -
SQLServer2005设置级联删除、级联更新
SQLServer2005设置级联删除、级联更新 在使用LINQ时,数据库中有表外键关联时,删除操作有时会出错,尽管还可以用SQL语句,但有时将这种操作交给数据库,会节省很多开销。 一、选择"关系" 二、更改"INSERT和UPDATE规范" SQLServer2005中的"层叠"就是SQLServ转载 2013-09-04 14:48:30 · 2046 阅读 · 0 评论 -
SQL Server 2008的BI组件SSAS使用详解
SSAS是用于SQL Server 2008 数据库用于BI的组件,通过SSAS可以创建多维数据库,并在之上进行数据挖掘操作。本文我们主要介绍一些关于SSAS数据分析的知识…… SSAS是用于SQL Server 2008 数据库用于BI的组件,通过SSAS可以创建多维数据库,并在之上进行数据挖掘操作。本文我们主要介绍一些关于SSAS数据分析的知识。接下来就让我们来一起了解一下转载 2013-09-04 17:22:58 · 1282 阅读 · 0 评论 -
NULL与空字符串
NULL说明:1、等价于没有任何值、是未知数。2、NULL与0、空字符串、空格都不同,NULL没有分配存储空间。3、对空值做加、减、乘、除等运算操作,结果仍为空。4、NULL的处理使用NVL函数。5、比较时使用关键字用“is null”和“is not null”。6、空值不能被索引,所以查询时有些符合条件的数据可能查不出来,count(*)中,用nvl(列名,0)处理后再查。7、排翻译 2013-09-13 09:38:18 · 968 阅读 · 0 评论 -
SQL索引
(一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别: 其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安翻译 2013-09-05 20:31:56 · 525 阅读 · 0 评论 -
SQL Server之分布式事务
--> Title : SQL Server之分布式事务--> Author : wufeng4552--> Date : 2009-11-11SQL Server之分布式事务(一)概念:分布式事务是涉及来自两个或多个源的资源的事务。Microsoft® SQL Server™ 2000支持分布式事务,使用户得以创建事务来更新多个SQL Server数据库和其它数据源。转载 2013-12-03 19:14:18 · 1008 阅读 · 0 评论 -
怎样才能充分利用SQL索引
背景:目前WEB的普及太快,很多网站都会因为大流量的数据而发生服务器习惯性死机,一个查询语句只能适用于一定的网络环境.没有优化的查询当遇上大数据量时就不适用了. 本文主旨:讨论什么情况下能利用上索引. 索引:创建索引可以根据查询业务的不同分为两种:单一列的索引,联合索引. 顾名思义,单一列索引就是指在表的某一列上创建索引,联合索引是在多个列上联合创建索引.转载 2016-06-28 23:10:13 · 306 阅读 · 0 评论 -
sql索引类型
索引类型唯一索引:唯一索引不允许两行具有相同的索引值主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位转载 2016-06-28 23:41:20 · 468 阅读 · 0 评论 -
利用WCF实现上传下载文件服务
引言 前段时间,用WCF做了一个小项目,其中涉及到文件的上传下载。出于复习巩固的目的,今天简单梳理了一下,整理出来,下面展示如何一步步实现一个上传下载的WCF服务。服务端 1.首先新建一个名为FileService的WCF服务库项目,如下图: 2.将Service,IService重命名为FileService,IFileService,...转载 2019-07-22 11:06:01 · 288 阅读 · 0 评论 -
SQLServer事务的隔离级别
数据库是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况。更新丢失(Lost update) 两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。脏读(Dirty Reads) 一个事务开始读取了某行数据,但是另外一个事务已经更新了此数据但没有能够及时转载 2013-09-04 15:15:07 · 732 阅读 · 0 评论 -
浅析SQL Server查询优化器的工作原理
SQL Server的查询优化器是一个基于成本的优化器。它为一个给定的查询分析出很多的候选的查询计划,并且估算每个候选计划的成本,从而选择一个成本最低的计划进行执行。实际上,因为查询优化器不可能对每一个产生的候选计划进行优化,所以查询优化器会在优化时间和查询计划的质量之间进行一个平衡,尽可能的选择一个“最优”的计划。 所以,查询优化器成为SQL Server中最重要的一个组件,并且影响着SQ转载 2013-09-11 09:19:44 · 708 阅读 · 0 评论 -
动态语句语法
--方法1查询表改为动态select * from sysobjectsexec(select ID,Name from sysobjects)exec sp_executesql Nselect ID,Name from sysobjects--多了一个N为unicode--方法2:字段名,表名,数据库名之类作为变量时,用动态SQL declare @FName varchar(20)s转载 2009-04-24 17:06:00 · 423 阅读 · 0 评论 -
插入数据存储教程
if object_id(dbo.proc_insert) is not nulldrop proc dbo.proc_insertgocreate proc proc_insert (@tablename varchar(256)) as begin set nocount on declare @sqlstr varchar(4000) declare @sqlstr1原创 2009-05-08 11:32:00 · 364 阅读 · 0 评论 -
SQL与Excel转换
、在SQL SERVER里查询Excel数据: -- ====================================================== SELECT * FROM OpenDataSource( Microsoft.Jet.OLEDB.4.0, Data Source="c:/book1.xls";User ID=Admin;Password=;Extended转载 2009-06-03 01:00:00 · 841 阅读 · 0 评论 -
SQL作业调度
定时作业的制定 企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项中输入作业名称 --"步骤"项 --新建 --"步骤名"中输入步骤名 --"类型"中选择"Transact-SQL 脚本(TSQL)" --"数据库"选择执行命令的数据库 --"命令"中输入要执行的语句: EXEC 存储过程名 ..转载 2009-06-10 20:59:00 · 783 阅读 · 0 评论 -
不同服务器数据库之间的数据操作
/*不同服务器数据库之间的数据操作*/--创建链接服务器 exec sp_addlinkedserver ITSV , , SQLOLEDB , 远程服务器名或ip地址 exec sp_addlinkedsrvlogin ITSV , false ,null, 用户名 , 密码 --查询示例 select * from ITSV.数据库名.dbo.表名转载 2009-06-12 21:25:00 · 381 阅读 · 0 评论 -
SQL锁
锁的类别有两种分法: 1. 从数据库系统的角度来看:分为独占锁(即排它锁),共享锁和更新锁 MS-SQL Server 使用以下资源锁模式。 锁模式 描述 共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。 更新 (U) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。 排它转载 2009-06-12 00:29:00 · 443 阅读 · 0 评论 -
Log Explorer查看和恢复数据
使用Log Explorer查看和恢复数据 Log Explorer 4.1.可用于SQL Server2005的日志查看工具下载地址:http://download.csdn.net/source/620271使用方法:打开Log Explorer -> Attach Log File -> 选择SQL Server服务器和登陆方式 -> Connect -> 在Database Name中选择转载 2009-06-12 20:45:00 · 641 阅读 · 0 评论 -
简要描述一下SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型
VARCHAR VS CHARVARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符串长度小于255的字符。假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。 现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数转载 2009-06-19 01:25:00 · 1788 阅读 · 0 评论 -
stuff 解析
STUFF ( character_expression , start , length ,character_expression ) 参数 character_expression 一个字符数据表达式。character_expression 可以是常量、变量,也可以是字符列或二进制数据列。 start 一个整数值,指定删除和插入的开始位置。如果 start 或 length 为负,则返转载 2009-07-01 22:22:00 · 474 阅读 · 0 评论 -
T-SQL常见基础疑点问答总结(1)
SQL code --建立测试环境IF object_id(tb) IS NOT NULL DROP TABLE tbGOCREATE TABLE tb(id INT IDENTITY(1,1),v VARCHAR(10))GOINSERT tb SELECT aUNION ALL SELECT bINSERT tb SELECT x转载 2009-07-05 18:29:00 · 457 阅读 · 0 评论 -
常用SQL
/* 字符函数 *//* 返回字符表达式中最左侧字符的ASCII代码值 */select Ascii(a) --a:97,A:65/* 将整数ASCII代码转换为字符 */select Char(97)--97:a,65:A/* 返回表达式中指定字符的开始位置 */select Charindex(b,abcdefg,5)/* 以整数返回两个字符表达式的SOUNDEX值之差 */sel转载 2009-07-03 21:24:00 · 420 阅读 · 0 评论 -
@@TRANCOUT
@@TRANCOUNT 是一个全局变量,包含当前的用户连接的当前活动事务数。此全局变量可用于在一个 BEGIN 事务...COMMIT 事务组的中间确定当 (和如果) 时的事务已回滚。 @@TRANCOUNT 变量就会增加每次启动新事务时使用一个 BEGIN 事务命令。当在执行 COMMIT 事务命令或已回滚该事务时,它会递减。可以通过使用 SELECT @@TRANCOUNT 命令访问此转载 2013-08-21 20:40:32 · 1091 阅读 · 0 评论 -
SQL优化
1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.分页SQL语句 select * from(select (row_number() OVER (ORDER BY tab.ID Desc)) as rownum,tab.* from 表名 As tab) As t转载 2009-04-22 22:31:00 · 360 阅读 · 0 评论